2016-11-17 68 views
-1

我正在使用小冊子0.7,並且想要使用leaflet.label插件添加靜態標籤。功能上的標籤-ajax調用

我用ajax調用獲取數據。我不確定在哪裏放置我的onEachFeature函數來填充標籤。我相對較新的JavaScript,並認爲我對這個有點困惑。

只要使用layer.bindLabel('靜態標籤'),此代碼就可以工作。但我無法用我的ajax調用中的數據填充它。 我知道該層是在ajax調用之前創建的,因此無法訪問數據。我該如何安排代碼來使用我的ajax調用中的數據填充標籤?

任何幫助是極大的讚賞

var pointlayer= new L.GeoJSON(null, { 
    pointToLayer: function (feature, latlng) { 
     return L.marker(latlng, {icon: sandicon}); 
     }, 
     onEachFeature: function (feature, layer) { 
       layer.bindLabel(feature.properties.id, //Dynamic label 
        {noHide:true,direction:'auto'}); 
     }, 
    onEachFeature: function (feature, layer) { 
      layer.bindPopup('Test' + feature.properties.id); 
    } 
}).addTo(map); 

$.ajax({ 
    url: "url", 
    dataType: 'jsonp', 
    cache: false, 
    jsonpCallback: 'getPoint', 
    success: handlePoint, 

}); 

function handlePoint(data) { 
    pointlayer.addData(data); 

}; 

回答

0

你有你的標籤綁定到pointToLayer創建

編輯標記:這不是錯誤

我不知道你在哪裏錯了,但我在這裏留下了一個工作示例:

https://github.com/yafred/ajax-geojson-and-labels(source)

https://yafred.github.io/ajax-geojson-and-labels/(網絡)

注:L.GeoJSON是單張1.0,L.GeoJson是單張0.7

+0

感謝您的答覆!你是這個意思嗎?返回L.marker(latlng,{icon:sandicon})。bindLabel(feature.properties.gid,{noHide:true,direction:'auto'});當我嘗試時,仍然沒有運氣。我可以添加一個靜態字符串標籤。是因爲它無法到達你認爲的財產嗎?我沒有得到任何錯誤,只是空標籤 – geogrow

+0

是的,這是我的意思。我正在設置一個例子。 – YaFred

+0

我已更新答案 – YaFred