这是我的代码。如果我使用loadGeoJson它会显示标记。如果我使用$ .getJSON将数据加载到对象并逐步添加每个标记,我就看不到任何标记。我确实看到所有的名字出现在" pList" div所以我知道它正确循环并正确访问对象的属性。我错过了什么?
var map;
function initialize() {
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(-34.397, 150.644)
};
map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
$.getJSON( "data.json", function( data ) {
participants = data.features;
}).done(function(){
$.each( participants, function(i, p){
$('#pList').append('<div>' + p.properties.name + '</div>');
marker = new google.maps.Marker({
position: new google.maps.LatLng (p.geometry.coordinates[0], p.geometry.coordinates[1]),
map: map,
title: p.properties.name
});
});
//map.data.loadGeoJson('data.json');
});
答案 0 :(得分:1)
您必须切换标记位置的参数。
在geoJSON中,Point-geometry的第一项是经度,第二项是纬度,但google.maps.LatLng
需要顺序1.纬度2.经度。
目前,当p.geometry.coordinates[1]
在-85,85
范围内时,您的代码只会绘制一个标记(但不会在所需的位置),因为这是纬度的有效范围。
marker = new google.maps.Marker({
position: new google.maps.LatLng (p.geometry.coordinates[1],
p.geometry.coordinates[0]),
map: map,
title: p.properties.name
});
如果这不能解决问题,map
- 变量显然无法在done
- 回调中访问。