我有一個包含本地化(「街道,城市,郵編,省,國家」)的數組。 我想要一個字符串,每個本地化都有Lat和Lng值,就像這樣(「#lat.value | lng.value#lat2.value | lng2.value ..」等)。我用這個Google API Geocoder。但Geocoder有一次令人討厭的10〜11次定位。我怎樣才能獲得大約100個本地化100個值?我試過sleep()funcion,但這不起作用。這是我在js中的功能。如何從標記獲得更多的+10/11 LatLng值
function sleep(time){
time = time * 1000;
var start = (new Date()).getTime();
while(true){
alarm = (new Date()).getTime();
if(alarm - start > time){ break; }
}
}
(..)
var mystring = "";
var address = <%=testing %>
var arrayaddress = address.split("%");
for (var i = 0; i < arrayaddress.length-1; i++) {
sleep(0);
geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': arrayaddress[i]}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
var zmiennalat = marker.getPosition().lat();
var zmiennalng = marker.getPosition().lng();
mystring = mystring + "#" + zmiennalat + "|" + zmiennalng;
}
else
{
mystring = mystring + "#" + "er" + "|" + "er";
//alert("Geocode was not successful for the following reason: " + status);
}
if (i == arrayaddress.length-1) {
var dsa = mystring;
document.getElementById("<%=hfWysokosc.ClientID%>").value = mystring;
document.getElementById("<%=hfSzerokosc.ClientID%>").value = dsa;
document.getElementById("<%=UpdateButton1.ClientID %>").click();
}
});
} // for
然後,結果是例如:
兒|呃#34.42342 | 16.4323#23.32131 | 43.54545#等。
總是第一個本地化的錯誤與解碼(如果超過10個陣列的話)。爲什麼? 爲什麼不在最後的本地化?
恢復:如何在此循環中獲得超過10個經緯度值?
謝謝!
編輯謝謝,那工作很好!
但還有另一個問題。字符串Mystring顯示得非常緩慢..如何修復它?當標記設置在地圖上時它會令人耳目一新 - 也許這不是問題,但對於100-150標記,我必須等待幾分鐘才能獲得Mystring值。是否有任何可能性顯示更快的Mystring值?
var mystring = "";
var address = <%=testing %>
alert(address);
var arrayaddress = address.split("%");
(function nextStep(i){
if(i >= arrayaddress.length-1){
return;
}
geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': arrayaddress[i]}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
var zmiennalat = marker.getPosition().lat();
var zmiennalng = marker.getPosition().lng();
mystring = mystring + zmiennalat + "|" + zmiennalng + "#";
}
else
{
mystring = mystring + "er" + "|" + "er" + "#";
//alert("Geocode was not successful for the following reason: " + status);
}
});
setTimeout(function(){ nextStep(i+1); }, 800);
var dsa = mystring;
document.getElementById("<%=hfSzerokosc.ClientID%>").value = dsa;
document.getElementById("<%=UpdateButton1.ClientID %>").click();
})(0);
UPDATE
function nextStep(i){
if(i >= arrayaddress.length-1){
return;
}
// code
});
setTimeout(function(){ nextStep(i+1); }, 1000);
};
然後
<button type="button" onclick="nextStep(0)">Click Me!</button>
和錯誤是:未定義
NEXTSTEP
有什麼不對?
「睡眠()」功能是對人類的犯罪。 – Pointy 2012-07-07 13:43:24
早些時候,我有setTimeout功能,我嘗試了一切,但..好吧,好吧,我的壞:D – whoah 2012-07-07 13:52:13