J'envoie les google.geocoder plusieurs adresses, mais les valeurs dans les résultats [0] .geometry.location sont tous les mêmes. Je crois avoir pris en compte la nature asynchrone de l'appel à l'aide d'un rappel. Quand j'ajouter des alertes pour voir les valeurs retournées, les adresses indiquées dans le geocoder.geocode ({ « adresse »: addr} ... sont tous corrects, l'état de retour est « ok », mais le lat / long sont les mêmes pour chaque appel. Je pas très bien versé en JavaScript, et je suis nouveau dans l'environnement .net, de sorte que toute aide serait grandement appréciée.
Ce code a parfaitement fonctionné de 4/1/2012 jusqu'à un certain temps près de Décembre ou au début de 2013. Est-ce que quelque chose a changé avec l'API Google? Je l'ai regardé sur le site Web de Google, mais ne trouve rien.
Voici mon premier appel:
<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);
}
});
}
La fonction de définir des repères et des informations de la fenêtre d'informations (j'ai retiré une partie du code qui semblait hors de propos à la question)
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;
}
}
La fonction où je crois que le problème réside suit. Comme il y avait plusieurs adresses étant envoyées à Google, j'ai ajouté un délai d'attente construit en afin de ne pas dépasser les limites. Encore une fois, tout cela a fonctionné pendant environ 8 mois et a soudainement arrêté. Lorsque plusieurs marqueurs utilisés pour afficher sur la carte, il y a maintenant un marqueur qui est écrit sur qu'apparente, car le retour lat / lng est le même que l'appel initial dans la fonction codeAddress (). Dans un effort pour trouver une solution que j'ai ajoutais des alertes pour me montrer les valeurs de retour. Je recevais confondu avec les valeurs de Bugzilla comme elles me conduiraient vers le javascript Google qui était complètement sur ma tête.
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);
}
});
}
Est-ce que quelqu'un peut m'aider avec ça?













