0

我正在尝试让一些 json 标记显示在我的地图上。

地图实际上正在出现,但没有显示任何指针,并且地图的位置很远。

这是js代码:

<script>

    $('#map_canvas').gmap().bind('init', function() { 
    // This URL won't work on your localhost, so you need to change it
    // see http://en.wikipedia.org/wiki/Same_origin_policy
    $.getJSON( 'locations.json', function(data) { 
        $.each( data.markers, function(i, marker) {
            $('#map_canvas').gmap('addMarker', { 
                'position': new google.maps.LatLng(marker.latitude, marker.longitude), 
                'bounds': true 
            }).click(function() {
                $('#map_canvas').gmap('openInfoWindow', {'content': marker.content }, this);
            });
        });
    });
});
</script>

这是json文件的内容:

{"locations":[{"id":"14","location":"(50.8765125,
 -1.1504182944499557)"}]}

代码有什么问题吗?

4

1 回答 1

1

从您的json文件结构中,我会说您正在尝试访问data.markers. locations是一个具有两个属性的对象数组:id是 aString并且locations是一个array长度为 2 的对象。那么为什么要使用这个代码呢?

marker.latitude
marker.longitude
marker.content

也许你应该试试

marker.location[0]
marker.location[1]

首先你应该确认你的 json 输出:

$.getJSON( 'locations.json', function(data) { 
    console.log(data);
}

并将其发布在您的问题中...

如果没问题,试试这样:

$.each( data.markers, function(i, marker) {
        $('#map_canvas').gmap('addMarker', { 
            'position': new google.maps.LatLng(marker.location[0], marker.location[1]), 
            'bounds': true 
        }).click(function() {
            $('#map_canvas').gmap('openInfoWindow', {'content': marker.id }, this);
        });
    });

...实际上我不确定你为什么使用data.marker也而不是data.locations

于 2012-09-15T11:07:08.390 回答