0

「getLatLng」メソッドが呼び出される前に 10 の有効な場所を表示するため、以下に示すコードでジオコーダーが一貫していないことに気付きましたが、このコード行の後、実際に表示されるポイントの数は検索するたびに異なります (同じ検索基準 - fyi) ランダムに 5 から 10 の間.. 非常に奇妙な

これに似た問題を抱えている人はいますか?もしそうなら、どのようにそれらを解決しましたか?

geocoder = new GClientGeocoder();
geocoder.getLatLng(address, function(point) {
if (point) {
        var icon = new GIcon();
        var marker = new GMarker(point, { icon: icon });
        GEvent.addListener(marker, 'click', function() { marker.openInfoWindowHtml(html); });
        map.addOverlay(marker);
4

4 に答える 4

1

ASP.NET アプリでこれを見ました。私の問題は、住所を表示する前に住所を検証していたことと、

  1. 一部の住所が間違っていました。

  2. 彼らのアドレス検証システムは、クライアントからの呼び出しごとに一定量の要求しか処理できません。

ジオコーディング (IMO) の前にアドレスをスクラブすることをお勧めします。

アドレスを確認してみてください。また、送信するアドレスの量を制限して、すべてのリクエストで連続しているかどうかをテストして確認してください。

それが役立つことを願っています。

于 2009-01-03T01:49:49.940 に答える
1

が何をするのかわかりませんaddPreCount()。しかし、タイムアウトは、インデックスに実際のタイムアウト定数を掛けたようなものでなければならないことは明らかだと思います。

したがって、定義されたタイムアウト定数が 225 であると仮定します。ジオコーダ ラッパーに渡されるタイムアウトは次のようになります。

var timeout = [index_of_each_xaddr] * 225;
window.setTimeout(function() { geoCodeLookup(_xaddr, _xid, _xindex, _xhtml, _xstatus); }, timeout);
于 2011-01-24T15:38:09.117 に答える
1

このように試してみてください。このように、1 回の実行で 34 ポイントを超えます。

function addAddress(address,runde) {
  geocoder.getLatLng(
    address,
    function(point) {
      if (!point) {
        //alert(address + " not found");
        if (runde<5) { // rekursiv, try adress 5 times to get
            window.setTimeout(function() {addAddress(address,runde+1);}, 1000); // wait 1 second bevor next try
            }
      } else {
        var marker_add = new GMarker(point);
        //alert(marker.getLatLng());
        leftClick(0, marker_add.getLatLng()); // function, add marker to map
      }
    }
  );
}  
于 2010-11-06T13:33:47.850 に答える
0

この不整合の原因は「アドレスの確認」コードではないことが実際にわかりましたが、代わりに、マップapiが大量のジオコーダー呼び出しを必要としなかったため、各リクエストの間に単純な225ミリ秒のタイムアウトを追加しました。これはトリックをしました

function preGeoCodeLookup(_xaddr, _xid, _xindex, _xhtml, _xstatus) {
        addPreCount();

        //don't change this timeout as it was the lowest timeout that still worked w/ the api
        var timeout = parseInt(precount) * 225;

        window.setTimeout(function() { geoCodeLookup(_xaddr, _xid, _xindex, _xhtml, _xstatus); }, timeout);
    }
于 2009-01-09T18:18:29.293 に答える