0

openlayer マップで Google ジオコーディング サービスを使用しようとしています。これは問題なく動作するはずです...そうではないでしょうか? 私が使用しているコードは、googles geocode api doc の例とまったく同じです。

function geoCode(){
  var adresse = $("observation_location_text").getValue();
  var geoCoder = new google.maps.Geocoder();
  alert(adresse);
  geoCoder.geocode( { 'address': address}, function(results, status) {                                                                                                                                                                  
    if (status == google.maps.GeocoderStatus.OK) {
      map.setCenter(results[0].geometry.location);
      marker.moveTo(results[0].geometry.location);
      marker.display(true);
    } else {
      alert("Geocode was not successful for the following reason: " + status);
    }
  });  }

何らかの理由で Geocoder オブジェクトを取得できません。アドレス付きのアラートは実行されません。

いくつかのヒントを楽しみにしています

4

3 に答える 3

3

OpenLayers から依存関係を削除して、機能するかどうかを確認してください。プレーンな Google Maps API でジオコーダー オブジェクトを作成できるはずです。

私が気づいた小さなことは、入力から「アドレス」と呼ばれる変数に値を読み取るが、「アドレス」と呼ばれるジオコーダー変数に渡すことです。入力ミスで 2 番目の変数が宣言されていない場合は、スクリプト エラーが発生し、コードの実行が停止します。おそらくそれが、ジオコーダー オブジェクトが作成されない理由です。

于 2011-02-08T20:02:39.450 に答える
1

最初の回答のコメントを読んでください - 「new google.maps.Geocoder()」を実行したときに Google マップ ファイルが読み込まれたと確信していますか?

コードはロード時に呼び出されるとのことですが、どのように実行しますか? jQuery を使用しているため、$(document).ready() で実行する必要があります。

于 2011-02-10T17:30:29.660 に答える
0

私はあなたとまったく同じことをしようとしています。ここに私の問題があります。リンクするのに役立つかもしれません

また、openlayers のレイヤーでジオコーディングのポイントを渡そうとする場合、openlayers ベクター レイヤーのポイントは (lon, lat) のようになりますが、Google ジオコーディングからのポイントは (lat,lon) のようになることに注意してください。私はGoogleのページからコピーしています:「場所には、ジオコードされた緯度、経度の値が含まれています。この場所は、フォーマットされた文字列ではなく、LatLngオブジェクトとして返されることに注意してください」(Googleのページ

しかし、問題は、El Duderino が言うように、「Google ジオコーダーは残念ながら、座標を使用して Google マップにマップするように指示する」ことだと思います...

また、Drupal を使用している場合は、これをチェックしてください...

于 2013-05-25T18:48:21.960 に答える