0
我正在使用leaflet api和L.geoJson。代碼的部分是leaflet api事件監聽器參數訪問
var indiaLayer= L.geoJson(india, {style: {weight: 2,
opacity: 1,
color: '#F7BE81',
dashArray: '10',
fillOpacity: 0.2}});
現在我在indiaLayer定義事件監聽器
indiaLayer.on('click', clicked);
現在,如果我想訪問點擊函數中的第一個參數,即印度,我應該用什麼?我諮詢了dom樹並發現它是
alert(this._layers.22.feature.id);
但它會引發語法錯誤。任何人都可以幫我解決問題嗎?謝謝
我附上完整的代碼也
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.css" />
<script src="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.js"></script>
<script src="india.js" type="text/javascript"></script>
</head>
<body>
<div id = "map1" style="width: 1100px; height: 400px"> </div>
<div id = "zoom" style="width: 100px; height: 100px"></div>
<div id = "select" style="width: 100px; height:100px"></div>
<script>
var area = L.map('map1', {center: [27.8800,78.0800], zoom: 4 });
L.tileLayer('http://a.tiles.mapbox.com/v3/raj333.map-gugr5h08/{z}/{x}/{y}.png').addTo(area);
function zoomDeal()
{
var zoom=document.getElementById("zoom");
zoom.innerHTML= area.getZoom();
}
area.on('zoomend',zoomDeal);
var indiaLayer= L.geoJson(india, {style: {weight: 2,
opacity: 1,
color: '#F7BE81',
dashArray: '10',
fillOpacity: 0.2}});
area.addLayer(indiaLayer);
function clicked(){
if (area.getZoom() == 4) {
if (this.options.style.fillOpacity == 0.5)
{
this.setStyle({fillOpacity: 0.2});
this.options.style.fillOpacity=0.2;
var select = document.getElementById("select");
select.innerHTML = "";
}
else
{
this.setStyle({fillOpacity: 0.5});
this.options.style.fillOpacity=0.5;
var select = document.getElementById("select");
//select.innerHTML = "india";
alert(this._layers.22.feature.id);
}
}
}
indiaLayer.on('click', clicked);
</script>
</body>
</html>
'22'是不是一個有效的標識符名稱,因此您必須使用括號符號而不是點符號來訪問它。你有沒有看過用'arr.0'訪問的數組? –
@FelixKling謝謝.....但是當我使用數組符號它告訴 TypeError:this._layers [0]是undefined 我使用alert(this._layers [0] .feature.id); – user609306
好吧,這隻意味着'this._layers'沒有屬性'0',即位置爲'0'的元素。你說它有'22'屬性,那麼爲什麼不嘗試呢? –