Json 使用$从对象添加地图标记。每个标记不';行不通

Json 使用$从对象添加地图标记。每个标记不';行不通,json,google-maps-api-3,google-maps-markers,each,Json,Google Maps Api 3,Google Maps Markers,Each,这是我的密码。如果我使用loadGeoJson,它会显示标记。如果我使用$.getJSON将数据加载到一个对象,然后逐步添加每个标记,那么我看不到任何标记。我确实看到所有的名称都显示在“pList”div中,所以我知道它正确地循环并正确地访问对象的属性。我错过了什么 var map; function initialize() { var mapOptions = { zoom: 8, center: new google.maps.LatLng(-34.397, 150.6

这是我的密码。如果我使用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');
});
var映射;
函数初始化(){
变量映射选项={
缩放:8,
中心:新google.maps.LatLng(-34.397150.644)
};
map=new google.maps.map(document.getElementById('map-canvas'),
地图选项);
}
google.maps.event.addDomListener(窗口“加载”,初始化);
$.getJSON(“data.json”),函数(数据){
参与者=数据。特征;
}).done(函数(){
$。每个(参与者,功能(i,p){
$('#pList').append(''+p.properties.name+'');
marker=新的google.maps.marker({
位置:new google.maps.LatLng(p.geometry.coordinates[0],p.geometry.coordinates[1]),
地图:地图,
标题:p.properties.name
});
});
//map.data.loadGeoJson('data.json');
});

必须切换标记位置的参数

在geoJSON中,点几何体的第一项是经度,第二项是纬度,但a
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
-回调中访问

其余的代码是什么样子的?“地图”在哪里定义?它在JSON数据返回之前存在吗?抱歉,其余代码与API中的示例相同。是,map是先前声明的。如果需要的话,我可以在周一发布完整的代码…很好地抓住了coords,但是我如何才能在回调中访问map?这取决于其他代码,目前您还没有发布创建map的位置/方式。您可以立即运行
$.getJSON
(在
初始化之前),在调用
initialize
之前获得结果时,尚未创建
映射。将调用
$.getJSON
移动到
初始化