-1
我有大約10K城市,st,zip行。我需要他們的經緯度。我嘗試了幾種不同的插件,但都使用Google。我聽說雅虎有一些更慷慨的限制,但我找不到像谷歌那麼好的書。有沒有用於excel的免費批處理地理編碼器有高限制(每天至少10K的請求)?還是我只是流浪?是否有免費的Excel插件地理編碼器沒有限制?
我有大約10K城市,st,zip行。我需要他們的經緯度。我嘗試了幾種不同的插件,但都使用Google。我聽說雅虎有一些更慷慨的限制,但我找不到像谷歌那麼好的書。有沒有用於excel的免費批處理地理編碼器有高限制(每天至少10K的請求)?還是我只是流浪?是否有免費的Excel插件地理編碼器沒有限制?
使用此代碼,它爲我工作,我發現它在線時,我有相同的問題 您可能需要扭轉它以符合您的具體要求,以及從Excel中提供的地址數組。
// delay between geocode requests - at the time of writing, 100 miliseconds seems to work well
var delay = 40;
// ====== Create map objects ======
var infowindow = new google.maps.InfoWindow();
var latlng = new google.maps.LatLng(-34.397, 150.644);
var mapOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var geo = new google.maps.Geocoder();
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
var bounds = new google.maps.LatLngBounds();
// ====== Geocoding ======
function getAddress(search, next) {
geo.geocode({address:search}, function (results,status)
{
// If that was successful
if (status == google.maps.GeocoderStatus.OK) {
// Lets assume that the first marker is the one we want
var p = results[0].geometry.location;
var lat=p.lat();
var lng=p.lng();
// Output the data
var msg = 'address="' + search + '" lat=' +lat+ ' lng=' +lng+ '(delay='+delay+'ms)<br>';
document.getElementById("messages").innerHTML += msg;
// Create a marker
createMarker(search,lat,lng);
}
// ====== Decode the error status ======
else {
// === if we were sending the requests to fast, try this one again and increase the delay
if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
nextAddress--;
delay++;
} else {
var reason="Code "+status;
var msg = 'address="' + search + '" error=' +reason+ '(delay='+delay+'ms)<br>';
document.getElementById("messages").innerHTML += msg;
}
}
next();
}
);
}
// ======= Function to create a marker
function createMarker(add,lat,lng) {
var contentString = add;
var marker = new google.maps.Marker({
position: new google.maps.LatLng(lat,lng),
map: map,
zIndex: Math.round(latlng.lat()*-100000)<<5
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(contentString);
infowindow.open(map,marker);
});
bounds.extend(marker.position);
}
// ======= An array of locations that we want to Geocode ========
var addresses = [
'General Roberto Fierro Airport Zona Hangares hangar 12 CHIHUAHUA MEXICO ',
'DURANGO MEXICO ', 'ENSENADA MEXICO ', 'GUADALAJARA MEXICO ', 'GUAYMAS MEXICO ', 'HERMOSILLO MEXICO ', 'HUATULCO MEXICO ', 'LA PAZ MEXICO ', 'LORETO MEXICO ','LOS MOCHIS MEXICO ',
'MANZANILLO MEXICO ', 'MATAMOROS MEXICO ', 'MAZATLAN MEXICO ', 'MERIDA MEXICO ',
'MEXICALI MEXICO ', 'MINATITLAN MEXICO ', 'MONCLOVA MEXICO ' ];
// ======= Global variable to remind us what to do next
var nextAddress = 0;
// ======= Function to call the next Geocode operation when the reply comes back
function theNext() {
if (nextAddress < addresses.length) {
setTimeout('getAddress("'+addresses[nextAddress]+'",theNext)', delay);
nextAddress++;
} else {
// We're done. Show map bounds
map.fitBounds(bounds);
}
}
// ======= Call that function for the first time =======
theNext();
}