【问题标题】:google maps setting of my location谷歌地图设置我的位置
【发布时间】:2013-01-09 21:17:40
【问题描述】:
var myloc;
function initialize() {

  if (navigator.geolocation) navigator.geolocation.getCurrentPosition(function(pos) {
    var me = new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude);
    myloc.setPosition(me);
    myloc.setMap(map);
  }, function(error) {
      // ...
  });

  var mapOptions = {
    zoom: 14,
    center: me,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };

  var mylocOptions = {
    title: "You are here..."
  };

  var map = new google.maps.Map(document.getElementById("map_canvas"), 
      mapOptions);

  myloc = new google.maps.Marker(mylocOptions);
}

我查看了another question 并觉得我对此有所了解。当我打开应用程序(第一次)时,它会询问我是否允许使用我的位置。我想我简化了 myloc 选项,我对默认外观和用于测试的标记的所有内容都很好。但是,在允许它之后,什么也没有发生。 me is undefined。也许我做错了事?

如果没有位置,我可以用其他标记来绘制地图,所以......这一定是订单?我已经尝试了一些变化...

我想最终在浏览器放弃一般坐标后在地图上放置一个标记。最终这将在数据库中移动和更新,但显然我现在还不担心。婴儿步...

【问题讨论】:

    标签: javascript google-maps


    【解决方案1】:

    第一次初始化标记时,不要将标记的位置设置给我。因为在用户允许浏览器使用他们的位置之后,me 才可用。当你得到他们的位置时再做。

    var mylocOptions = {
      title: "You are here..."
    };
    
    if (navigator.geolocation) navigator.geolocation.getCurrentPosition(function(pos) {
      var me = new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude);
      myloc.setPosition(me);
      myloc.setMap(map);
      map.setCenter(me);
    }, function(error) {
      // ...
    });
    

    也删除

    center: me
    

    您在哪里定义map

    【讨论】:

    • 已修改...未捕获的引用错误:我未定义。未捕获的类型错误:无法调用未定义的方法“setPosition”
    • 有些东西在起作用,因为我的浏览器中有一个很酷的小目标,显示该站点正在跟踪我的位置。但是,唉……
    • 但是 myloc 是在 initialize() 函数之外定义的,不是吗?
    • 试过了,现在只能得到me is not defined。当我把它放在myloc = mew~下方时,浏览器中的位置标记也丢失了
    • 同时删除center: me。正如我所说,me 仅在用户允许后可用。查看我的更新答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多