safari移动地理定位和地图渲染

时间:2012-01-04 21:06:22

标签: javascript iphone google-maps-api-3 mobile-safari

我正在尝试获取移动网络应用的用户位置,如果他们的浏览器不支持地理位置,则将其发送到默认地图中心位置。这在Firefox上工作正常,但是当我在iPhone上测试时,它会提示位置使用,然后地图就不会呈现。我注意到,一旦我关闭safari并重新打开它,地图就会开始渲染地理定位。这是safari中的错误,还是我初始化地图的方式有误?

function init() {
    var center = new google.maps.LatLng(42.283151,-87.955098);  
    if (navigator.geolocation) { 
        navigator.geolocation.getCurrentPosition(function(position) {  

        var loc = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);


        map = new google.maps.Map(document.getElementById('map_canvas'), {
        zoom: 11,
        center: loc,
        mapTypeId: google.maps.MapTypeId.ROADMAP
        });

        new google.maps.Marker({
          position: point,
          map: map
        });
      }); 
  } 
  else {
            map = new google.maps.Map(document.getElementById('map_canvas'), {
        zoom: 15,
        center: center,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });  

  }  
}

1 个答案:

答案 0 :(得分:0)

您是否在等待iPhone的GPS以获得您所在位置的修复?这种位置服务的初始激活可能需要一段时间才能获得准确的位置以返回API,这解释了为什么后续加载按预期工作。

添加一些代码来表明HTML5地理位置功能正在运行(在调用getCurrentPosition后可能会显示“正在加载...”消息),这可能是值得的。

错误回调也值得捕捉并优雅地处理在getCurrentPosition期间发生的errors。你肯定会遇到navigator.geolocation为true的情况,但它不会触发你定义的成功函数。