【问题标题】:Google Map API 3 marker's not showingGoogle Map API 3 标记未显示
【发布时间】:2012-08-02 06:15:15
【问题描述】:

我正在使用谷歌地图 API 3 和谷歌地理编码器。问题是它没有显示标记和信息窗口我通过 ajax 带来数据并调用函数 showAddress(elemId, address) 其中 elementId 是 div id 将在其中呈现地图。这里是谷歌地图的代码

<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>

【问题讨论】:

    标签: php ajax codeigniter google-maps google-maps-api-3


    【解决方案1】:
    1. 您没有检查对地理编码器的调用是否成功(地址是什么?)
    2. 你没有使用文档化的接口,这些会随着版本的变化而改变:

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

    【讨论】:

      【解决方案2】:

      首先 .Ya 和 .Za 没有记录在案的属性,所以如果你像 in 那样使用它们

      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
      })
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 2012-04-10
      • 1970-01-01
      • 2014-07-29
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      相关资源
      最近更新 更多