Google Geocoder возвращает тот же набор LAT / LNG для нескольких различных адресов. LAT / LNG координаты города или поселка, а не адрес

голоса
0

Посылаю google.geocoder несколько адресов, но значения в результатах [0] .geometry.location все же. Я считаю, что я составил асинхронную природу вызова с помощью обратного вызова. Когда я добавляю оповещение, чтобы видеть возвращаемые значения, адрес, передаваемый в geocoder.geocode ({ «адрес»: адр} ... все правильно, состояние Возвращается «ки», но широта / долгота одинакова для каждый вызов. Я не очень хорошо разбирается в 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 месяцев, и вдруг остановился. Если несколько маркеров используются, чтобы показать на карте, в настоящее время существует один маркер, который кажущийся перезаписаны, так как широта / 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

Ну, после нескольких долгих часов, глядя на этот код, пытаясь понять это, я, наконец, наткнулся на что-то, используя бойко размещенные оповещения. По-видимому, переменная адр содержала «'» и геокодировщик был не в состоянии обеспечить 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