1

JSON 文件的结构如下:

({condos:[{Address:'123 Fake St.', Lat:'56.645654', Lng:'23.534546'},{... another condo ...},{...}],houses:[{Address:'1 Main Ave.', Lat:'34.765766', Lng:'27.8786674'},{... another house ...}, {...}]})

所以,我在一个大的 JSON 数组中有一个公寓房屋的列表。

我想将它们全部绘制在我的地图上,但我想为公寓房屋提供不同的标记图标(公寓蓝色标记,房屋的绿色标记)。

$.each()我遇到的问题是 - 当我通过它们时弄清楚如何区分标记类型。我将如何if检查我目前是在公寓还是房子里工作?

var markers = null;
$('#map').gmap(mapOptions).bind('init', function(){
    $.post('getMarkers.php', function(json){
        markers = json;
        $.each(markers, function(type, dataMembers) {
            $.each(dataMembers, function(i, j){
                //if house use house.png to create marker
                $('#map').gmap('addMarker', { 'position': new google.maps.LatLng(parseFloat(Lat), parseFloat(Lng)), 'bounds':true, 'icon':'house.png' } );
                //if condo use condo.png
                $('#map').gmap('addMarker', { 'position': new google.maps.LatLng(parseFloat(Lat), parseFloat(Lng)), 'bounds':true, 'icon':'condo.png' } );
            });
        });
    });
});
4

1 回答 1

2

您有一个嵌套集合 - 一个具有两个成员(公寓和房屋)的对象,每个成员都包含多个子对象。您似乎已经将该类型作为外部each()循环的一部分,所以只需使用它:

...
        markers = json;
        $.each(markers, function(type, dataMembers) { // <- right here
            $.each(dataMembers, function(i, j){
                if (type == 'house') {
                    $('#map').gmap('addMarker', { 'position': new google.maps.LatLng(parseFloat(Lat), parseFloat(Lng)), 'bounds':true, 'icon':'house.png' } );
                }
                else if (type == 'condo') {
                    $('#map').gmap('addMarker', { 'position': new google.maps.LatLng(parseFloat(Lat), parseFloat(Lng)), 'bounds':true, 'icon':'condo.png' } );
                }
            });
        });
...
于 2012-06-08T16:36:48.710 回答