我开始使用 Leaflet 库。我试图在点击标记时添加一个事件。
我有一个循环,可以根据数据库中的数据量在地图上创建标记。原来是这个文件:
array(6) {
[0]=>
array(13) {
[0]=>
string(9) "37.162047"
[1]=>
string(10) "140.328209"
[2]=>
string(321) "Japan word word word word word word word word word word word word word word word"
[3]=>
string(12) "Japan"
[4]=>
NULL
[5]=>
string(10) "Tokyo"
[6]=>
string(10) "Ocean"
[7]=>
string(10) "12.04.2013"
[8]=>
string(1) "5"
[9]=>
string(1) "8"
[10]=>
string(3) "345"
[11]=>
string(6) "676796"
[12]=>
string(7) "6799654"
}
[1]=>
array(13) {
[0]=>
string(9) "49.775444"
[1]=>
string(9) "10.757696"
[2]=>
string(325) "Germany word word word word word word word word word word word word word word word"
[3]=>
string(16) "Germany"
[4]=>
NULL
[5]=>
string(12) "Berlin"
[6]=>
string(10) "Rock"
[7]=>
string(10) "21.03.2010"
[8]=>
string(1) "6"
[9]=>
string(1) "4"
[10]=>
string(5) "45736"
[11]=>
string(7) "7699870"
[12]=>
string(7) "4563463"
}
..............
}
使用此代码获取此文件:
$data_encode = (json_encode($data));
使用此解析:
var map_data = JSON.parse('<? echo $data_encode; ?>');
标记JS代码:
function description_event(e) {
dscr.innerHTML = map_data[i][2];
}
for (var i = 0; i < map_data.length; i++) {
marker = new L.marker([map_data[i][0], map_data[i][1]])
.bindPopup("<b>" + map_data[i][8] + "</b>" + "<br>" + map_data[i][7] + "<br>" + map_data[i][3])
.on('click', description_event)
.addTo(map);
}
}
我需要通过单击标记从数据库发送数据。因此,例如,“日本”被写在标记上,并且描述“日本字词...”被发送到块,到具有 id =“dscr”的 div。但我做不到。 仅当 map_data [0] [2] 时才发送点击;并且只有“日本字词...”和map_data [i] [2];不起作用。也就是说,迭代不起作用。 各种方法我都试过了。
同样的问题
.on('click', function() { dscr.innerHTML = map_data[0][2]; })