2013-03-26 72 views
0

我正在尝试构建一个Web应用程序,它从服务器中提取数据并将多个标记添加到来自JSON响应的Google地图中。这是JSON响应的样子:从json添加多个标记到Google地图

{"key":[{"Latitude":"60.186518","Longitude":"24.950575"}...]} 

我试图实现从this post代码,但我无法得到它的工作。

这是我到目前为止的代码:

function success(position) { 
    var mapcanvas = document.createElement('div'); 
    mapcanvas.id = 'mapcontainer'; 
    mapcanvas.style.height = '600px'; 

    document.querySelector('article').appendChild(mapcanvas); 
    var coords = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 
    var options = { 
    zoom: 15, 
    center: coords, 
     panControl: false, 
    zoomControl: false, 
    mapTypeControl: false, 
    scaleControl: false, 
    streetViewControl: false, 
    overviewMapControl: true, 

    navigationControlOptions: { 
     style: google.maps.NavigationControlStyle.SMALL 
    }, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById("mapcontainer"), options); 
    var marker = new google.maps.Marker({ 
     position: coords, 
     map: map, 
     title:"You are here!"}); 

function getLocations() { 

    $.getJSON("http://myurl.com/jsonresponse", function (json) { 

     var location; 


     $.each(json.key, function (i, item) { 
      addMarker(item.Latitude,item.Longitude); 
     }); 

    }); 
} 

function addMarker(lat,lng) { 
     marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(lat,lng), 
      map: map, 
     }); 
     markersArray.push(marker); 
} 

} 
if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(success); 
} else { 
    error('Geo Location is not supported'); 
} 
+0

什么不工作?如果你调试,你会得到哪些错误? – SativaNL 2013-03-26 10:03:11

+0

如果你有很多标记,我建议你使用KML文件... – grigno 2013-03-26 10:12:19

+0

当前我有36个标记。我似乎没有得到任何错误。我认为addmarker函数有问题,但我不确定。 – user2210792 2013-03-26 10:24:43

回答

1

请试试这个:在addMarker功能

 function getLocations() { 
      $.ajax({ 
       url: 'http://myurl.com/jsonresponse', 
       async:false, 
       success: function(data) { 
       $.each(data.key, function(index) { 
        addMarker(data[index].Latitude,data[index].Longitude); 
        }); 
       } 
      }); 
     } 

其他合理使用的console.log(纬度,经度),并在这里复制输出。

+0

当我添加的console.log到addMarker这样的: '函数addMarker(纬度,经度){ 的console.log(纬度,经度) 标记=新google.maps.Marker({ 位置:新google.maps .LatLng(lat,lng), map:map, }); markersArray.push(marker); } ' 它没有在控制台上显示任何东西? – user2210792 2013-03-26 10:43:28

+0

如果你把ajax请求的成功函数放在console.log(data.key)之后? – SativaNL 2013-03-26 14:28:48

+0

还是什么都没有.. – user2210792 2013-03-26 15:44:32

相关问题