2013-11-25 3 views
1

Я курю работаю с картами google, и у меня есть метод, который создает маркеры на картах google. Метод дает информацию для маркеров. одна часть этой информации - это долгота и ширина для маркера. Долгожданность и ретушируются от zip-кода через функцию в javascript. однако, когда я возвращаю долготу и Латтильность, он говорит, что ничего не содержит.Возвращаемая строка с javascript на C#

Он получает несколько кодов почтового индекса и должен возвращать несколько longtitudes и

широт

Мой код:

Это добавляет маркеры.

void AddMarkerTimer(object sender, EventArgs e) 
     { 

      try 
      { 
       this.Document.InvokeScript("addMarker", new string[] { this.Document.InvokeScript("getLatFromPost", new string[] { delictMarkers[MarkerIndex].PostalCode }) + "", this.Document.InvokeScript("getLonFromPost", new string[] { delictMarkers[MarkerIndex].PostalCode }) + "", "marker" + MarkerIndex, MarkerIndex + "" }); 
       MarkerIndex++; 
      } 
      catch(ArgumentOutOfRangeException ax){ 
       MessageBox.Show(ax.ToString()); 
      } 

      if (MarkerIndex == delictMarkers.Count - 1) 
      { 
       MarkerTimer.Stop(); 
      } 
     } 

Это должно вернуть долготу и длину (javascript).

function getLatFromPost(post) { 
      var geocoder = new google.maps.Geocoder(); 
      geocoder.geocode({ address: post }, 
       function (results_array, status) { 
        var s; 
        s = results_array[0].geometry.location.lat(); 
        //alert(s); 
        // Check status and do whatever you want with what you get back 
        // in the results_array variable if it is OK. 
        return s; 
       }); 
     } 
     function getLonFromPost(post) { 
      var geocoder = new google.maps.Geocoder(); 

       geocoder.geocode({ address: post }, 
        function (results_array, status) { 
         var s; 
         s = results_array[0].geometry.location.lng(); 
         alert(s); 
         // Check status and do whatever you want with what you get back 
         // in the results_array variable if it is OK. 
         return s; 
        }); 

      } 

И эта часть добавляет его на карту (javascript).

function addMarker(x, y, titleMarker, index) { 
      var marker = new google.maps.Marker({ 
       position: new google.maps.LatLng(x, y), 
       map: map, 
       title: titleMarker, 
       icon: delict, 
       index: index 
      }); 
      google.maps.event.addListener(marker, "click", function (event) { 
       showMarkerContextMenu(event.latLng, index, titleMarker); 
      }); 
      marker.set("index", index); 
      markerList[index] = marker; 
      //marker.setMap(map); 
     } 

Надеюсь, что это моя проблема. Заранее благодарю за внимание.

+0

Кажется, что-то работает асинхронно, поэтому вы можете посмотреть это сообщение http://stackoverflow.com/questions/2993563/how-do-return-a-variable-from-google-maps-javascript-geocoder- callback – AOZ

+0

Я рассмотрю его :) – Arnout

ответ

0

geocoder.geocode работает асинхронно. Это означает, что вы передаете параметры и функцию обратного вызова. Когда ответ будет готов, вызывается функция обратного вызова. Поэтому в принципе не имеет смысла возвращать значение функции обратного вызова. Поскольку даже если значение должно было быть возвращено, оно будет возвращено вызывающему абоненту, который в этом случае является Google.

Смежные вопросы