4

我正在搞乱带有地理位置的 Google Maps API。一切都按预期工作,但是我在控制台中不断收到此错误:

Uncaught TypeError: Cannot read property 'coords' of undefined

这是我的地理检查:

// Does this browser support geolocation?
if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(initialize, locationError);
} else {
    showError("Your browser does not support Geolocation!");
}

我的成功处理程序:

function initialize(position) {
    var lat = position.coords.latitude;
    var lon = position.coords.longitude;
    var acc = position.coords.accuracy;

    // Debugging
    console.log(position.coords);
    console.log("Accuracy: "+acc+"\nLatitude: "+lat+"\nLongitude: "+lon);

    // Google Maps API
    var myLatlng = new google.maps.LatLng(lat,lon);
    var mapOptions = {
        center: new google.maps.LatLng(lat, lon),
        zoom: 12,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
    var marker = new google.maps.Marker({
        position: myLatlng,
        map: map,
        title:"Hello World!"
    });
}

然后我在我的身体标签中初始化地图<body id="map" onload="initialize()">

地图渲染得很好,一切都按预期工作。当我登录position.coords到我的控制台时,我得到了一个干净的读数。为什么我不断收到此错误?

谷歌和 SO 搜索没有结果......

干杯

4

3 回答 3

5

加载文档时,将调用不带参数的初始化方法。这就是你得到错误的原因。

试试这种方式:

function initCoords() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(initialize, locationError);
  } else {
    showError("Your browser does not support Geolocation!");
  }
}

并在您的 html 代码中:

<body id="map" onload="initCoords()">

保持initialize功能不变。

于 2012-11-15T21:58:56.373 回答
1

错误可能在这里

<body id="map" onload="initialize()">

您正在调用没有参数的初始化函数。因此“位置”参数未定义

function initialize(position) {
    var lat = position.coords.latitude;

就好像你打电话

var lat = undefined.coords.latitude
于 2012-11-15T21:58:51.233 回答
0

如果您在使用地图对象之前在cordova/phonegap 中的谷歌地图上遇到错误,请确保存在谷歌地图html data-lat 和data-long 属性。

这是一个示例,

<div class="widget uib_w_20 maps-size d-margins" data-uib="media/google_maps" data-ver="0" data-rpath="null" data-zoom="8" id="google-maps " 数据中心自动="真" 数据拉特="41.309697" 数据长="-72.9370447">

没有 data-lat 和 data-long 以及作为 web 应用程序进行测试,将在谷歌地图初始化期间失败

于 2015-09-14T12:21:25.043 回答