2013-10-09 54 views
0

我有一個應用程序使用leaflet.js和geoJSON來創建一個大的多邊形區域,然後使用jQuery和leaflet.js混合使用更小的圓圈填充。是否有可能在jQuery中檢測像多邊形這樣的大形狀是否包含較小的圓形形狀?

這是被創建的圈子:

$.getJSON('http://localhost/json/json.php', function(data){ 
     $(data.payload.incidents).each(function(key, value) { 
      var lati = data.payload.incidents[key].incident.locationlatitude; 
      var longi = data.payload.incidents[key].incident.locationlongitude; 
      var title = data.payload.incidents[key].incident.incidenttitle; 
      var desc = data.payload.incidents[key].incident.incidentdescription; 
      var mark = L.circle([lati, longi], 50,{ 
       color: 'red', 
       fillColor: '#f03', 
       fillOpacity: 0.5 
       }).addTo(map); 


      mark.bindPopup("<b>"+title+"</b></br></br>"+desc).openPopup(); 
      console.log("success"); 
      } 
     }) 

    }); 

我曾嘗試使用此行的代碼來檢測圓:

if(geojson.getBounds().contains(mark){console.log('mark detected')} 

但是。載()出現只用於爲矩形。

這是將多邊形添加到地圖的位置。 (areaData是GeoJSON的)

 var geojson 
     geojson = L.geoJson(areaData, { 
     style: style, 
     onEachFeature: onEachFeature 
    }).addTo(map); 
+1

這是太寬泛什麼...這些元素究竟是什麼?他們是如何創建的?你有沒有嘗試過任何東西?你有任何代碼可以分享嗎? – Lix

+0

polygon.getBounds()返回一個邊界框。檢查一個點是否在一個盒子內很容易;這就是包含的內容。檢查多邊形更困難。這裏有一個很好的討論http://stackoverflow.com/questions/217578/point-in-polygon-aka-hit-test – kielni

回答

0

你可以試試這個

if(geojson.getBounds().contains(mark.getLatLng())){console.log('mark detected')} 

因爲包含需要一個經緯度對象,你是提供L.circle對象

相關問題