Google Maps API - почему это не работает? - PullRequest
0 голосов
/ 16 июля 2010

Итак, я делаю веб-приложение на основе Google Maps на JavaScript, и часть моего кода выглядит так:

    function revGeocode(marker){ 
      var latlng = marker.position;
      if (geocoder) {
        geocoder.geocode({'latLng': latlng}, function(results, status) {
          if (status == google.maps.GeocoderStatus.OK) {
            if (results[1]) {
              return "GOOD";
            } else {
              alert("No results found");
     return "BLAH1";
            }
          } else {
            alert("Geocoder failed due to: " + status);
      return "BLAH2";
          }
        });
      }
   else{
    return "No Geocoder?!"
   }
   return "Weird..";
  }

Теперь по какой-то причине он пропускает условия IF и ELSE и переходитокончательный результат (который я только что добавил, чтобы понять, почему он не уловил оба условия).Кто-нибудь знает, почему это происходит?

Ответы [ 2 ]

1 голос
/ 16 июля 2010

геокодер является асинхронным процессом. Вместо того, чтобы возвращать «blah1 или blah2» во внутренней функции, пусть она вызывает другую функцию, которая делает то, что вы хотите.

1 голос
/ 16 июля 2010

Если я прав насчет того, что вы ожидаете, произойдет ...

Вы возвращаетесь из анонимной функции, когда геокодер получает положительный ответ от службы API Карт Google, но он возвращает анонимную функцию вызывающей стороне (независимо от того, какой объект геокодера используется для отправки уведомлений в функцию обратного вызова), он не возвращается из вашего revGeocode(marker) метода.

Итак, если вы ожидаете увидеть "GOOD", этого не произойдет. Если вместо этого поставить alert("GOOD");, это должно произойти заметным образом. В настоящее время вы должны видеть что-то, только если все идет не так, как запланировано, но кажется, что все должно работать правильно.

После этого после вашего вызова geocoder.geocode() в исходном коде вашей функции не будет других операторов return, поэтому возвращаемое значение будет "Weird..".

Надеюсь, это полезно, если я неправильно понял, о чем вы спрашивали, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...