0

これが私のコードです。問題は地図が表示されていることですが、地図上にマーカーが配置されていません。latlongARRは、次のような配列です。

[{"name": "McChord Field DGC"、 "lat": "47.128257"、 "long": "-122.488847"}、{"name": "Ambient DGC"、 "lat": "47.184732"、 "long ":"-122.509232 "}、{" name ":" Riverside Disc Golf Park "、" lat ":" 47.185683 "、" long ":"-122.212600 "}、{" name ":" East Tacoma DGC "、" lat ":" 47.227344 "、" long ":"-122.398491 "}、{" name ":" White River "、" lat ":" 47.278501 "、" long ":"-122.197390 "}]

すべてがうまくいくようです?? 明らかな間違いはありますか?

                var mapOptions = {
                    zoom:10,
                    center: currentLocation,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                    };
                var map = new google.maps.Map(document.getElementById('dgmap'), mapOptions);
                var infowindow = null;

                var infowindow = new google.maps.InfoWindow({content: 'loading...'}); 

                var marker, i;

                for(i=0; i < latlongARR.length; i++){
                    var markers;
                    marker = new google.maps.Marker({
                        position: new google.maps.LatLng(latlongARR[i][1], latlongARR[i][2]),
                        map:map
                        });
                        console.log(latlongARR[i][0]);
                    google.maps.event.addListener(marker, 'click', (function(marker, i){
                        return function(){
                            infowindow.setContent(latlongARR[i][0]);
                            infowindow.open(map, marker);
                        }
                        })(marker,i));
                    };

                }
4

2 に答える 2

2
position: new google.maps.LatLng(latlongARR[i][1], latlongARR[i][2]),

latlongARR[i]はオブジェクトです。値を取得するには、数値インデックスではなくプロパティ名を使用する必要があります。上記のコードは次のようになります。

position: new google.maps.LatLng(latlongARR[i].lat, latlongARR[i].long),

また

position: new google.maps.LatLng(latlongARR[i]['lat'], latlongARR[i]['long']),

以下の同じ問題:

infowindow.setContent(latlongARR[i][0]);

これはあるべきですinfowindow.setContent(latlongARR[i].name);

于 2012-10-17T02:02:59.320 に答える
1

デバッガを使用する必要があります。最初のことはこれです:

                   marker = new google.maps.Marker({
                    position: new google.maps.LatLng(latlongARR[i][1], latlongARR[i][2]),
                    map:map
                    });

latlongARR[i][1]latlongARR[i][2]が定義されていない場合、 と である必要がlatlongARR[i].latありlatlongARR[i].longます。

于 2012-10-17T02:23:21.343 に答える