我最近学习了Mapbox商店定位器教程,为我工作的巡回艺术家制作了一张简单的“即将到来的巡回日期”地图。这是伟大的工作,但我正在寻找一种更容易更新geoJSON点的方法-我将把页面的日常维护交给一位同事,我希望地图能够很容易地添加/删除点。目前,geoJSON点是内联编码到脚本中的,但是如果我可以通过geoJSON.io或Mapbox数据更新文件,并且它会自动将新点拉入地图中,这将是理想的。在任何给定时间,地图上显示的最多数据约为100个场地,不会使用多边形或边界框。
这就是脚本当前获得其GeoJSON点的方式——变量“存储”将它们全部内联。我想知道最好的方法是能够在像Mapbox或geojson.io这样的CMS中编辑/添加/删除GeoJSON数据,并通过脚本中的URL动态更新它。
原谅我,如果这些都是荒谬的——我是新来的!提前感谢您的帮助!
var stores = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-77.034084142948,
38.909671288923
]
},
"properties": {
"phoneFormatted": "(202) 234-7336",
"phone": 2022347336,
"address": "1471 P St NW",
"city": "Washington DC",
"country": "United States",
"crossStreet": "at 15th St NW",
"postalCode": 20005,
"state": "D.C."
}
}
map.on('load', function(e) {
map.addSource("places", {
"type": "geojson",
"data": stores
});
这实际上很容易。你只需替换这一行:
"data": stores
与
"data": "https://..."
文档:https://www.mapbox.com/mapbox-gl-js/style-spec#sources-geojson
因此,您只需要找到一个可以在线存储GeoJSON文件并定期更新的地方。为此,我有时使用Github的要点。
我花了两天时间才找到这个“看起来很简单”问题的答案。
>
使用d3.json()获取geojson数据
map.on('load', function() {
// We use D3 to fetch the JSON here so that we can parse and use it separately
// from GL JS's use in the added source. You can use any request method (library
// or otherwise) that you want.
d3.json(
'PATH TO YOUR GEOJSON FILE',
function(err, data) {
if (err) throw err;
map.addSource('stores', {
'type': 'geojson',
'data': data
});
map.addLayer({
'id': 'stores',
'type': 'circle',
'source': 'stores',
'paint': {
'circle-radius': 6
}
});
data.features.forEach(function(store, i){
store.properties.id = i;
});
buildLocationList(data);
});
});
我已从mapbox复制并调整了此示例:https://docs.mapbox.com/mapbox-gl-js/example/filter-markers/ 一切工作正常,但我想有Geojson作为一个外部文件。 所以我修改了这个代码: 为此: 我在DevTools中得到了这个错误:uncaughttypeerror:无法读取未定义的属性'forEach'。 其余代码(我得到错误)如下所示:
有没有一种方法可以使用标准ajax请求从mapbox获取geojson文件? 比如: 我们目前下载了一个geojson文件,并将其作为本地脚本加载到站点上,一切正常。但是拜托,必须有一种方法从mapbox获取它,这样我们就不必不断更新本地文件。客户永远不会理解这个概念。 有人知道API访问点或获取geosjon文件的东西吗?
我试图使用MapBox来显示所有聚集在一个城市中的多个属性。 (还没有在这和传单之间做出决定) 这是我第一次处理geoJSON内容,并尝试创建包含多个地址的文件。 这是我从网上某个地方得到的一个示例,Mapbox一直在说: 它来自这个名为testing.geojson的文件,其中只包含以下内容: 我真的很困惑为什么它一直产生这个错误,因为我希望使这个示例与属性的实际地址一起工作。 任何建议/帮助将
我试图使用Adobe reader读取从服务器下载的pdf文件,但问题是当我将其存储在内部存储时,其他应用程序无法读取该文件。现在我想知道如何将此文件复制到外部存储(/sdcard/)中,以便pdf查看器可以查看。 由于安全原因,我将文件存储在内部存储,然后删除外部存储的文件。 我的问题是如何复制保存在内部存储中的文件,而不使用raw或将其放入InputStream中的资产。
因此,我在脚本文件夹中有两个独立的GeoJSON文件,一个用于绘制边界线,另一个用于放置标记。每个GeoJSON文件都有不同的内容,例如: 还有一个: 将一个GeoJSON放在这种格式中工作, 但是如何添加另一个geoJSON呢?
我有一个Xperia Neo V没有任何内部存储--只有一个SD卡作为外部存储,而Galaxy S3有内部和外部存储。 使用此函数时只能访问内部存储(S3)上的文件,但Xperia Neo V没有问题。 如何访问内部和外部存储上的文件?