4

ジオロケーションを使用したGoogleMapsAPIをいじっています。すべてが期待どおりに機能していますが、コンソールで次のエラーが発生し続けます。

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タグでマップを初期化します<body id="map" onload="initialize()">

マップは正常にレンダリングされ、すべてが期待どおりに機能しています。position.coordsコンソールにログインすると、きれいな読み取り値が表示されます。なぜこのエラーが発生し続けるのですか?

GoogleとSOの検索では結果が表示されませんでした...

乾杯

4

3 に答える 3

5

ドキュメントが読み込まれると、initialize メソッドが引数なしで呼び出されます。そのため、エラーが発生します。

代わりにこの方法を試してください:

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 の Google マップでエラーが発生する場合は、Google マップの 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 " data-center-auto="true" data-lat="41.309697" data-long="-72.9370447">

data-lat と data-long がなく、Web アプリとしてテストすると、Google マップの初期化中に失敗します

于 2015-09-14T12:21:25.043 に答える