Google Geocoder birkaç farklı adresler için enlem / lng aynı kümesini döndürür. Lat / Boylam City koordinatları veya Kasaba değil hitap vardır

oy
0

Ben google.geocoder birçok adrese gönderiyorum ama [0] .geometry.location sonuçlarında değerler hep aynıdır. Ben geri çağrı kullanılarak aramanın asenkron doğa oluşturdu inanıyoruz. Ben değerleri (, geocoder.geocode geçirilen adresleri verildiğini görmek uyarıları eklediğinizde { 'adres': addr} ... hepsi doğru, döndürülen durum Tamam, ama lat uzun süre aynıdır / her çağrı. Ben çok iyi JavaScript usta ve .net ortamına yeni değilim, bu yüzden herhangi bir yardım büyük takdir değilim.

Bu kod Aralık yakınındaki bazı zamana kadar 4/1/2012 ila mükemmel çalıştı ya 2013 erken şey hakkında API ile değişti mi? Ben google'ın web sitesinde baktım ama bir şey bulamıyorum.

İşte benim ilk çağrısıdır:

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

işaretleri ve bilgi penceresi bilgileri ayarlamak için fonksiyonu (ı soruya ilgisiz görünüyordu kodu bazılarını kaldırdık)

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

   }

Sorun yatıyor inanıyorum fonksiyonu izler. Birkaç adresleri google gönderiliyor vardı beri, sınırlarını aşmayacak şekilde bir zaman aşımı inşa ekledi. Yine, bu tüm yaklaşık 8 ay çalıştı ve aniden durdu. çeşitli belirteçler haritada göstermek için kullanılan yerlerde, hemen enlem / Ing dönüş codeAddress () fonksiyonunda ilk çağrı ile aynı olduğu için yazılı üzerinde görünen bir bir marker vardır. Bir çözüm bulmak için bir çaba bana dönüş değerlerini göstermek için uyarıları ekleme edilmiştir. tamamen kafamın bitmişti google javascript beni ele alacağını gibi ben bugzilla değerlerle karıştı başlamıştı.

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

Herkes bu konuda bana yardımcı olabilir misiniz?

Oluştur 22/02/2013 saat 16:05
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
0

Eh, onu anlamaya çalışırken bu kodun bakarak bazı uzun saatler sonra nihayet akıllıca yerleştirilmiş uyarılar kullanarak şey üzerinde tökezledi. Görünüşe addr değişken içeriyordu "'" ve geocoder sonucu enlem / Ing veri sağlamak mümkün değildi. bu satırı Düzeltilmiş:

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

Şimdi hepsi çalışıyor.

Cevap 28/03/2013 saat 18:42
kaynak kullanıcı

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