获取Mapbox Store Locator的外部GeoJSON文件

时间:2017-12-13 15:21:07

标签: mapbox geojson mapbox-gl-js

我最近关注了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
});

2 个答案:

答案 0 :(得分:2)

花了我两天时间,找出这个“看起来很简单”的问题的答案。

  1. 您将需要在脚本中包含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)

  2. 使用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。