0

我注意到我的地理编码器在下面显示的代码中不一致,因为在调用“getLatLng”方法之前我显示了 10 个有效位置,但是在这行代码之后,每次搜索时实际显示的点数都不同(相同搜索条件 - 仅供参考)随机在 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

像这样试一试,像这样我一次跑就超过 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 回答
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 回答
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 回答