在Google Map上绘制来自Json Array的LatLng坐标---所有标记都堆叠在同一位置

时间:2011-09-09 20:04:22

标签: javascript jquery google-maps

我有一个包含纬度和经度坐标的Json数组。这是一个示例:

"zones":[{"Zip":35824,"Latitude":34.647995,"Longitude":-86.738549},...

我试图在数组上使用循环来解析坐标并在谷歌地图上绘制它们。这是我的Javascript:

function getLocations() {

    $.getJSON("http://localhost:1117/zones/latlng", function (json) {

        var location;


        $.each(json.zones, function (i, item) {
            location = item.Latitude + ',' + item.Longitude, addMarker(location);
        });

    });
};

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

我的问题是标记最终堆叠在彼此的顶部,绘制在地图的左上角(正好在海洋的中间)。标记堆栈的位置在我的Json数组中无处出现。我做错了什么?

2 个答案:

答案 0 :(得分:5)

我认为问题是新的google.maps.LatLng()需要(数字,数字)作为参数,并且您传入的字符串格式为“数字,数字”。

如果您将addMarker()函数更改为具有两个应该有效的参数(例如纬度,经度):

function getLocations() {

    $.getJSON("http://localhost:1117/zones/latlng", function (json) {

        var location;


        $.each(json.zones, 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,
            icon: redImage
        });
        markersArray.push(marker);
}

答案 1 :(得分:0)

使用聚类.make标记组作为cluster.one聚类将在其中显示许多标记。也可以制作边界。