Google Geocoder retourneert de dezelfde set van lat / lng voor verschillende adressen. Lat / Lng zijn de coördinaten van de stad of het dorp en niet te pakken

stemmen
0

Ik stuur de google.geocoder verschillende adressen, maar de waarden in de resultaten [0] .geometry.location zijn allemaal hetzelfde. Ik denk dat ik goed voor de asynchrone aard van het gesprek via een telefoontje terug. Als ik waarschuwingen te zien van de waarden die worden geretourneerd, de adressen doorgegeven in de geocoder.geocode (voeg { 'adres': addr} ... zijn allemaal correct, de status terug is ok, maar de lengte / breedte gelijk zijn voor elke oproep. ik ben niet erg goed thuis in JavaScript, en ik ben nieuw in de .NET-omgeving, dus elke hulp zou zeer gewaardeerd worden.

Deze code werkte perfect van 4/1/2012 tot enige tijd in de buurt van december of begin 2013. Is er iets veranderd met de Google API? Ik heb gekeken naar de website van Google, maar kan niets vinden.

Hier is mijn eerste gesprek:

    <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);
     }
   });
 }

De functie om de markers en info venster informatie in te stellen (ik heb een aantal van de code die niet relevant leek de vraag verwijderd)

    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;
  }

   }

De functie waar ik denk dat het probleem ligt volgt. Aangezien er verschillende adressen worden verzonden naar google, heb ik een ingebouwde timeout teneinde niet de beperkingen overschrijden. Nogmaals, dit alles werkte voor ongeveer 8 maanden en is plotseling gestopt. Indien meerdere markers gebruikt om te laten zien op de kaart, nu is er een marker die is schijnbaar boven geschreven, omdat de lat / lng rendement is hetzelfde als de eerste oproep in de functie codeAddress (). In een poging om een ​​oplossing te vinden heb ik het toevoegen van waarschuwingen om me te laten zien de terugkeer waarden. Ik werd verward met de bugzilla waarden als ze me zou nemen naar de google javascript die volledig over mijn hoofd was.

     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);
            }
    });
    }

Kan iemand me helpen met dit?

De vraag is gesteld op 22/02/2013 om 16:05
bron van user
In andere talen...                            


1 antwoorden

stemmen
0

Nou, na een aantal lange uren staren naar deze code proberen te achterhalen, heb ik eindelijk struikelde over iets met behulp van slim geplaatste waarschuwingen. Blijkbaar is de addr variabele die """ en de geocoder was niet in staat om lat / lng gegevens als gevolg. Gecorrigeerd deze lijn:

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

Alles werkt nu.

antwoordde op 28/03/2013 om 18:42
bron van user

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