javascript - map 标记 getPosition() 在第一次调用函数时不适用于谷歌地图

标签 javascript google-maps google-maps-api-3 google-maps-markers

我正在尝试在 map 上放置一个标记,然后使用该标记的位置来绘制一些多边形。但是,marker.getPosition() 最初似乎没有返回值。我需要再次调用该函数来获取之前的标记位置。有谁对为什么会这样有任何建议

function codeAddress() {
  var address = fubar;
  geocoder.geocode( { 'address': address}, function(results, status) {
      map.setCenter(results[0].geometry.location);
      map.setZoom(1);
      if (marker == null){
        marker = new google.maps.Marker({
          map: map,
        });
      }
      marker.setPosition(results[0].geometry.location);
  });
  document.write(marker.getPosition());   //this displays nothing
}

最佳答案

Google map 正在使用回调 ( see parameter 2 in the documentation ),因为它的 not synchronousfunction(results,status) 位是神奇发生的地方。它在 Google 对地址进行地理编码后运行。在那之前你没有什么可显示的。

试试这个:

function codeAddress() {
    var address = fubar;
    geocoder.geocode( { 'address': address}, function(results, status) {
        map.setCenter(results[0].geometry.location);
        map.setZoom(1);
        if (marker == null){
            marker = new google.maps.Marker({
                map: map,
            });
        }
        marker.setPosition(results[0].geometry.location);
        alert("Alert 1");
        alert(marker.getPosition());
    });
    alert("Alert 2");
}

你会看到alert("Alert 2")出现在alert("Alert 1")

之前

关于javascript - map 标记 getPosition() 在第一次调用函数时不适用于谷歌地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10131815/

相关文章:

javascript - 编写没有 load 和 .ready 函数的 javascript

javascript - 如何将 Three.js 转换为 .STL 文件以进行 3D 打印?

javascript - 如何在 JavaScript 中使用 charAt 检查一个值

javascript - 我们如何更改蜘蛛图背景颜色?

Google map 信息窗口中的 Javascript - 在 IE 中不起作用

javascript - 仅在 Rails 应用程序的某些页面上加载 Google map 脚本

android - 我可以在 osmdroid 中使用 Google map 图 block 吗?

ajax - 使用 url 编码获取拾取点的问题,而谷歌地图距离计算

javascript - API 中的 Google map 未显示

javascript - 谷歌地图API v3绘制折线