2

JavaのJSF2プロジェクトによって提供される.xhtmlページで動作するGoogleマップウィジェットがあります。地図が表示され、うまく機能するマーカーを追加する機能があります。ただし、Geocoderを使用しようとすると、「ERROR」のステータスが返されるようです。Google Maps APIは、「status」変数の戻り値の5つの候補の中で、そのようなエラーステータスについて言及していません。

Followngはデプロイされた.jsファイルであり、問​​題の問題の関数はcodeAddress()です。codeAddress()と同様のコードは、私が見つけることができるオンラインの他の場所で機能するため、呼び出される状況と関係があるはずです。マップがうまく表示され、マーカーを配置できることを考えると、私のセッションはうまくいくと期待しています。これは私を困惑させます:(誰かが「エラー」が何から来るのか知っていますか??

var map;
var marker;
var geocoder;

function placeMarker(location) {
 if (!marker) {
      marker = new google.maps.Marker({
          position: location,
          map: map
      });
  } else {
      marker.setPosition(location);
  }
  map.setCenter(location);
  var field = document.getElementById("portCreate:coordinate");
  field.value = "POINT (" + location.lat() + " " + location.lng() + ")";
}

function initialize() {
    var mapOptions = {
        center : new google.maps.LatLng(55.761123, 13.084717),
        zoom : 5,
        mapTypeId : google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(
    document.getElementById("map"), mapOptions);

    google.maps.event.addListener(map, 'click', function(event) {
        placeMarker(event.latLng);
    });

    setMarker(document.getElementById("portCreate:coordinate"));

    geocoder = new google.maps.Geocoder();
}

function setMarker(field) {
    if (field.value) {
        var regex = /POINT.+?([-0-9\.]+).+?([-0-9\.]+)/;
        var matches = regex.exec(field.value);
        placeMarker(new google.maps.LatLng(Number(matches[1]), Number(matches[2])));
    }
}

function codeAddress(address) {
    geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            map.setCenter(results[0].geometry.location);
        } else {
            alert("Geocode was not successful for the following reason: " + status + "\nFor address " + address);
        }
    });
}

function loadScript() {
  var script = document.createElement("script");
  script.type = "text/javascript";
  script.src = "https://maps.googleapis.com/maps/api/js?key=<API key here>&sensor=false&callback=initialize";
  document.body.appendChild(script);
}

window.onload = loadScript;
4

4 に答える 4

2

今日、これと同じ問題が発生した後、APIへのリンクを作成する代わりに、コードを.jsとしてダウンロードしたことを思い出しました。それをリンクに変更した後、それは再び機能します。Googleはスクリプトを定期的に更新していると思います。バージョンの競合がある場合は、エラーステータスが返されます。

于 2013-03-27T18:54:28.613 に答える
1

javascript / geocodingのドキュメントには、考えられる結果として「ERROR」が示されています。

「エラー」は、リクエストがタイムアウトしたか、Googleサーバーへの接続に問題があったことを示します。再試行すると、リクエストが成功する場合があります。

于 2017-11-29T21:44:58.910 に答える
0

私も同じ問題を抱えていました。ASP.Netアプリケーションを使用していました。ASP .NetボタンコントロールをHTML入力ボタンに変更した後、現在は機能しています。問題がどこにあるのかわからない。

<input type="button" value="Geocode" onclick="codeAddress()">
于 2014-03-19T01:01:15.997 に答える
0

私は同様の問題のトラブルシューティングを行っていました。そこでは、応答が返される前にgoogle API httpリクエストをキャンセルすることで、エラーステータスを再現することができました。

于 2015-11-30T19:44:07.907 に答える