2016-06-21 2 views
0

Я работал над приложением, в котором вы можете показать points на карте. Чтобы улучшить приложение, я добавил функциональность шоу multipolygons.Стиль и точки и мультиполигоны одновременно Листовка

Я создал dropdowmenu, где вы можете выбрать набор данных. Один из них представляет собой набор данных, содержащий магазины (точки), а другой содержит участки (многополигоны). Все работает отлично, и я могу показать на карте точки или полигоны.

Поскольку я создаю приложение, чтобы показывать только точки сначала, я только начертил точки (см. Код ниже).

var myStyle = { 
"color": "#ff7800", 
"weight": 5, 
"opacity": 0.65 
}; 

    window["mapDataLayer"] = L.geoJson(geojson, { 
     pointToLayer: function (feature, latlng) { 
      var markerStyle = { 
       fillColor: getColor(feature.properties.Fastfoodketen), 
       color: "#696969", 
       fillOpacity: 0.6, 
       opacity: 0.9, 
       weight: 1, 
       radius: 8 
      }; 
      return L.circleMarker(latlng, markerStyle); 
     }, 
     onEachFeature: function (feature, layer){ 
      layer.on({ 
       click: function showResultsInDiv() { 
        var d = document.getElementById('tab4'); 
        d.innerHTML = ""; 
         for (prop in feature.properties){ 
         d.innerHTML += prop+": "+feature.properties[prop]+"<br>"; 
         } 
        $('.nav-tabs a[href="#tab4"]').tab('show'); 
       } 
      }); }, 
     style: myStyle 
    }).addTo(map); 

Теперь я хочу стилизовать многоугольники. Как изменить код выше, чтобы включить также полигоны?

Я думал, что было бы хорошим способом включить цикл if/else, чтобы проверить, была ли геометрия точкой или мультиполигоном, а затем направляется к соответствующему стилю. Тем не менее, я не знаю, как проверить, является ли геометрия точкой/полигоном.

ответ

1

Это охватывается Leaflet documentation on GeoJSON options (курсив):

pointToLayer: A Function определение того, как GeoJSON точек икру листовка слоев [...]

style:. А Function Определяя Path варианты для укладки GeoJSON линии и полигоны, [...]

Вы можете увидеть примеры этого в Leaflet tutorials for GeoJSON

+0

Я проверил сайт листовка раньше, но когда я реализую 'style', он изменяет мне обе точки (которые я не хочу менять) и multipolygons. Я редактировал свой вопрос с помощью нового кода. –

+0

Хорошо, что это хорошо! Но как проверить, является ли функция точкой или полигоном? –

+1

'if (feature.geometry.type === 'Point') {...}'. Посмотрите на [GeoJSON spec] (http://geojson.org/) – IvanSanchez

Смежные вопросы