Ich schicke die google.geocoder mehrere Adressen, aber die Werte in den Ergebnissen [0] .geometry.location sind alle gleich. Ich glaube, ich habe für die asynchrone Art des Anrufs entfielen wieder einen Anruf mit. Wenn ich Warnungen hinzufügen die Werte sehen zurückgegeben, die in der geocoder.geocode gebenen Adressen ({ ‚Adresse‘: Adr} ... sind alle richtig, wieder der Status „ok“, aber die lat / lang sind die gleichen für jeder Anruf. ich bin nicht sehr gut in JavaScript versiert, und ist neu in der .NET-Umgebung, so dass jede Hilfe würde sehr geschätzt werden.
Dieser Code funktioniert perfekt von 2012.04.01 bis einige Zeit in der Nähe von Dezember oder Anfang 2013 hat etwas mit der Google API verändert? Ich habe auf der Google-Website gesucht, aber kann nichts finden.
Hier ist mein erster Aufruf:
<script type=text/javascript src=http://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false></script>
<script type=text/javascript>
var geocoder;
var map;
var directionsDisplay;
var directionsRenderer;
var startPoint;
var endPoint;
function initialize()
{
geocoder = new google.maps.Geocoder();
codeAddress();
var myOptions =
{
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById(map_canvas), myOptions);
var trafficLayer = new google.maps.TrafficLayer();
trafficLayer.setMap(map);
setMarkers(map);
google.maps.event.addListener(map, 'click', function(event) {
dirMarker(event.latLng);
startPoint = event.latLng;
});
}
function codeAddress()
{
var address = document.getElementById(<%=hCVT.ClientID%>).value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
alert(Status: + status + res from CODE ADDRESS -- + results[0].geometry.location); //TO REMOVE
map.setCenter(results[0].geometry.location);
} else {
alert(Geocode of CVT was not successful for the following reason: + status);
}
});
}
Die Funktion der Markierungen und Infofenster Informationen zu setzen (ich habe einige der Code entfernt, der auf die Frage irrelevant schien)
function setMarkers(map)
{
// Add markers to the map
var shape = {
coord: [1, 1, 1, 20, 18, 20, 18 , 1],
type: 'poly'
};
var places = new Array([,,,,]);
var xx = String;
xx = document.getElementById(<%=addys.ClientID%>).value;
var placeholder = xx.split(,);
var latlng;
var i = 0;
for(var y = 0; y < (placeholder.length / 5 - 1); i=i+5)
{
places[y, 0] = placeholder[i];
places[y, 1] = placeholder[i+1]; //Unit Status
places[y, 2] = placeholder[i+2]; // Long - not used
places[y, 3] = placeholder[i+3]; // Zindex
places[y, 4] = placeholder[i+4]; // HTML for information window
addr = places[y,0];
ustat = places[y,1];
zind = places[y,3];
iwdata = places[y,4];
getLatLong(addr, iwdata, ustat, zind, function(latlng, addr, iwdata, ustat, zind) {
var marker = new google.maps.Marker({
position: latlng,
map: map,
html: iwdata,
icon: pinImage,
shadow: pinShadow,
shape: shape,
title: addr,
zIndex: parseInt(places[y,3])
});
var infowindow = new google.maps.InfoWindow({
content: iwdata});
});
y = y + 1;
}
}
Die Funktion, wo ich das Problem liegt glauben folgt. Da es mehrere Adressen waren Google gesendet zu werden, habe ich eine in Timeout gebaut, um nicht die Grenzen zu überschreiten. Wieder arbeitete das alles etwa 8 Monate und plötzlich zum Stillstand gekommen ist. Wo mehrere Markierungen auf der Karte zu zeigen, verwendet, jetzt gibt es eine Markierung, die über geschrieben schien, weil die lat / lng Rückkehr der gleiche wie der erste Aufruf in der codeAddress () Funktion ist. In dem Bemühen, eine Lösung zu finden Ich habe Warnungen schon länger mir die Rückgabewert zu zeigen. Ich war immer verwirrt mit den Bugzilla-Werten, wie sie mich zu dem Google Javascript nehmen würden, die vollständig über den Kopf war.
function getLatLong(addr, iwdata, ustat, zind, callback){
geocoder.geocode( { 'address': addr}, function(results, status){
if (status == google.maps.GeocoderStatus.OK){
callback(results[0].geometry.location, addr, iwdata, ustat, zind);
} else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
window.setTimeout(function() {self.getLatLong(addr, iwdata, ustat, zind, callback);
},500);
} else {
alert(Address Geocode failure: + addr + ==== + status + Y value: + zind + res --- + res);
}
});
}
Kann mir jemand dabei helfen?













