Google Geocoder gibt den gleichen Satz von lat / lng für mehrere unterschiedliche Adressen. Lat / Lng sind die Koordinaten der Stadt oder Gemeinde und nicht die Adresse

stimmen
0

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?

Veröffentlicht am 22/02/2013 um 16:05
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Nun, nach einigen langen Stunden an diesem Code starren versucht, es herauszufinden, ich stolperte schließlich auf etwas intelligent platziert Warnungen verwenden. Offenbar enthielt die Adr Variable „'“ und der Geocoder war nicht in der Lage lat / lng Daten als Ergebnis zu liefern. Bereinigt diese Zeile:

addr = places[y,0].replace(/'/g, "");

Alle funktioniert jetzt.

Beantwortet am 28/03/2013 um 18:42
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more