我最近关注了Mapbox商店定位器教程,并为我工作的巡演艺术家制作了一个简单的“即将到来的旅游日期”地图。它工作得很好,但我正在寻找一种方法来更轻松地更新geoJSON点 - 我将把页面的日常维护交给同事,我希望地图很容易添加/删除点到。目前,geoJSON点内联编码到脚本中,但如果我可以通过geojson.io或Mapbox数据更新文件,它将是理想的,它会自动将新点拉入地图。在任何给定时间将在地图上的大多数数据是~100个单一场地,将不使用多边形或边界框。
这是脚本当前获取其geoJSON点的方式 - 变量“stores”将它们全部内联。我想知道能够在像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
});
答案 0 :(得分:2)
花了我两天时间,找出这个“看起来很简单”的问题的答案。
您将需要在脚本中包含D3库(将v3更改为v6-它不起作用,并且像我一样已经过了1天)
from django.db.models import Q
from .models import RealEstateListing
def advanced_search(self, community_features, property_features, price, listing, location):
query_dictionary = {
'community_features': community_features,
'property_features': property_features,
'price__lte': price,
'listing_type': listing,
'location': location,
}
# filter out None values
not_none_parameters = {single_query: query_dictionary.get(single_query) for single_query in query_dictionary if query_dictionary.get(single_query) is not None}
filter_list = Q()
for item in not_none_parameters:
filter_list |= Q(**{item:not_none_parameters.get(item)})
qs = RealEstateListing.objects.filter(filter_list)
使用d3.json()获取geojson数据
<script src="https://d3js.org/d3.v3.min.js" charset="utf-8"></script>
答案 1 :(得分:0)
实际上真的很容易。你只需要替换这一行:
= \
与
\
文档:https://www.mapbox.com/mapbox-gl-js/style-spec#sources-geojson
因此,您只需找到一个可以在线存储GeoJSON文件并定期更新的地方。为此,我有时会使用Github的Gist。