我注意到我的地理编码器在下面显示的代码中不一致,因为在调用“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);
答案 0 :(得分:1)
我在我的ASP.NET应用程序中看到了这一点。我的问题是我在显示地址之前验证了地址和
我的部分地址不正确。
他们的地址验证系统只能在客户的每次通话中处理一定数量的请求。
最好在地理编码(IMO)之前擦除地址。
尝试验证您的地址,并尝试限制您发送的地址数量,以便测试并查看每个请求是否连续。
希望有所帮助。
答案 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
}
}
);
}
答案 2 :(得分:1)
我不确定addPreCount()
的作用。但我认为很明显,超时应该是索引乘以实际超时常量。
因此假设定义的超时常量为225.传递给地理编码器包装器的超时时间为:
var timeout = [index_of_each_xaddr] * 225;
window.setTimeout(function() { geoCodeLookup(_xaddr, _xid, _xindex, _xhtml, _xstatus); }, timeout);
答案 3 :(得分:0)
我实际上发现这不是导致这种不一致的“验证地址”代码,而是 - 只是地图api不需要大量的地理编码器调用,所以我添加了一个简单的225ms超时每个请求都有这个技巧
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);
}