3

私はグーグルマップAPI3とグーグルジオコーダーを使用しています。問題は、マーカーと情報ウィンドウが表示されないことです。ajaxでデータを取得し、関数showAddress(elemId、address)を呼び出しています。ここで、elementIdは、マップがレンダリングされるdividです。ここにグーグルマップのコードがあります

<script type="text/javascript">
//<![CDATA[

var geocoder;
var map;
var lat;
var lng;
function showAddress(elemId, address) {
    geocoder = new google.maps.Geocoder();
    geocoder.geocode( { 'address': address}, function(results, status){
//        console.log(results[0].geometry.location.YA);
            lat = results[0].geometry.location.Ya;
            lng = results[0].geometry.location.Za;
                var mapOptions = {
                    zoom: 15,
                    center:  new google.maps.LatLng(lat, lng),
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };
            map = new google.maps.Map(document.getElementById(elemId),
                    mapOptions)
            $('a#full-'+elemId).attr('href','http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q='+lat+','+lng+'')
            var marker 
            marker = "marker_"+elemId;
            myLatlng = new google.maps.LatLng(lat,lng);
            marker = new google.maps.Marker({
                id:elemId,
                position: myLatlng,
                map: map
            });
            var infowindow = "infowindow"+elemId;
            infowindow  = new google.maps.InfoWindow({
            content: 'Hello world'
            });
            infowindow.open(map, marker);
            google.maps.event.trigger(map, 'resize');
    });

}
</script>
4

2 に答える 2

2

まず、.Yaと.Zaは文書化されたプロパティではないため、次のように使用すると

lat = results[0].geometry.location.Ya;
lng = results[0].geometry.location.Za;

そのコードは壊れそうです。

次に、results [0] .geometry.locationはすでにgoogle.maps.LatLng()オブジェクトであるため、latとlngを別々に抽出して新しいオブジェクトを作成する必要はありません。次のように使用できます。

map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
    id: elemId,
    map: map,
    position: results[0].geometry.location
})
于 2012-08-04T12:32:49.450 に答える
2
  1. ジオコーダーへの呼び出しが成功したかどうかを確認していません(住所は何ですか?)
  2. 文書化されたインターフェースを使用していない場合、これらはリリースによって変更されます。

        lat = results[0].geometry.location.Ya;
        lng = results[0].geometry.location.Za;
    
于 2012-08-04T12:37:38.560 に答える