Η Google Geocoder επιστρέφει το ίδιο σύνολο των lat / LNG για πολλές διαφορετικές διευθύνσεις. Lat / ΥΦΑ οι συντεταγμένες της πόλης ή δήμου και όχι την αντιμετώπιση

ψήφοι
0

Στέλνω τις google.geocoder διάφορες διευθύνσεις, αλλά οι τιμές στα αποτελέσματα [0] .geometry.location είναι όλοι το ίδιο. Πιστεύω ότι αντιπροσώπευαν την ασύγχρονη φύση της πρόσκλησης, χρησιμοποιώντας μια κλήση πίσω. Όταν προσθέτετε ειδοποιήσεις για να δείτε τις τιμές επέστρεψε, τις διευθύνσεις περάσει στο geocoder.geocode ({ «διεύθυνση»: addr} ... είναι όλα σωστά, η κατάσταση που επιστρέφεται είναι «εντάξει», αλλά το γεωγραφικό πλάτος / μήκος είναι τα ίδια για κάθε κλήση. δεν είμαι πολύ πολύ έμπειρα σε JavaScript, και είμαι νέος στο περιβάλλον .net, οπότε οποιαδήποτε βοήθεια θα ήταν ευγνώμονες.

Αυτός ο κωδικός λειτούργησε τέλεια από 4/1/2012 μέχρι κάποιο χρονικό διάστημα κοντά Δεκεμβρίου ή στις αρχές του 2013. Έχει κάτι αλλάξει με το API της Google; Είδα στην ιστοσελίδα της Google, αλλά δεν μπορεί να βρει τίποτα.

Εδώ είναι η πρώτη μου κλήση:

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

Η λειτουργία για να ρυθμίσετε τους δείκτες και τις πληροφορίες παράθυρο πληροφοριών (έχω αφαιρεθεί ένα μέρος του κώδικα που φάνηκε άσχετο με το θέμα)

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

   }

Η λειτουργία όπου πιστεύω ότι το πρόβλημα έγκειται ακολουθεί. Δεδομένου ότι υπήρχαν αρκετές διευθύνσεις που αποστέλλονται στο google, θα προστεθεί ένα ενσωματωμένο στο χρονικό όριο, έτσι ώστε να μην υπερβαίνει τα όρια. Και πάλι, αυτό λειτούργησε όλα για περίπου 8 μήνες και ξαφνικά σταμάτησε. Όταν περισσότεροι του ενός δείκτες που χρησιμοποιούνται για να δείξει στο χάρτη, τώρα υπάρχει ένας δείκτης που έχει φαινομενική πάνω γραμμένο επειδή η lat / LNG επιστροφή είναι η ίδια με την αρχική κλήση στη συνάρτηση codeAddress (). Σε μια προσπάθεια να βρεθεί μια λύση έχω προσθέτοντας ειδοποιήσεις για να μου δείξει τις τιμές επιστροφής. Είχα πάρει συγχέεται με τις τιμές bugzilla που θα μου πάρει πάνω από την javascript Google η οποία ήταν εντελώς πάνω από το κεφάλι μου.

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

Μπορεί κάποιος να με βοηθήσει με αυτό;

Δημοσιεύθηκε 22/02/2013 στις 16:05
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Λοιπόν, μετά από μερικά πολλές ώρες κοιτάζοντας αυτόν τον κώδικα προσπαθώντας να το καταλάβω, εγώ τελικά σκόνταψε σε κάτι που χρησιμοποιούν έξυπνα τοποθετημένο ειδοποιήσεις. Προφανώς η μεταβλητή addr περιείχε «'» και η geocoder δεν ήταν σε θέση να παράσχει lat / LNG δεδομένων ως αποτέλεσμα. Προσαρμοσμένη αυτή τη γραμμή:

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

Όλα λειτουργεί τώρα.

Απαντήθηκε 28/03/2013 στις 18:42
πηγή χρήστη

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