Google maps api v2 Долгота и широта адреса проблемы - PullRequest
0 голосов
/ 24 января 2012

Пока у меня есть работающий скрытый скрипт для получения долготы и широты с адреса.Проблема в том, что я не могу отправить, в то время как кнопка отправки используется для получения долготы и широты.

Поэтому я хотел бы следующее: Адрес будет помещен в скрытое поле.(заполняется моей CMS, ExpressionEngine). При загрузке страницы значения Долгота и Широта будут собраны в два поля ввода, после чего нажмите «Отправить» и нажмите «Готово».

Но как это сделать, я пока что использую следующий код.Пожалуйста, помогите.

     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>Longitude and Latitude from address</title>

        <script src="http://maps.google.com/maps?file=api&v=2&key=YOUR KEY" type="text/javascript" charset="utf-8">

         </script>
            <script type="text/javascript">
        //<![CDATA[

        function load() {
          if (GBrowserIsCompatible()) {
            geocoder = new GClientGeocoder();
           }
        }

        function showAddress(geolocation) {
          if (geocoder) {
            geocoder.getLatLng(
              geolocation,
              function(point) {
                if (!point) {
                  alert(geolocation + " not found");
                } else {
                  document.geoform.longitude.value = point.x;
                  document.geoform.latitude.value = point.y;
                }
              }
            );
          }
        } 

        //]]>
        </script>
        </head>
      <body onload="load()">

     <form action="#" name="geoform" id="geoform" onsubmit="showAddress(this.geolocation.value); return false">
     <input  type="hidden" name="geolocation" value="Address goes here, populated by cms" size="50"  />

     Decimal Longitude:
     <input  name="longitude" type="text" id="longitude" value="" />

     Decimal Latitude:
     <input  name="latitude" type="text"  id="latitude"  value="" />

     <input type="submit" value="Longitude/latitude codes" />
     </form>
     </body>
     </html>

1 Ответ

1 голос
/ 11 февраля 2012

К тому времени, когда вы отправляете форму, уже слишком поздно делать запрос на геокодирование адреса.Лучше геокодировать адрес на странице загрузки, а затем просто отправить форму.

    function load() {
      if (GBrowserIsCompatible()) {
        geocoder = new GClientGeocoder();
        geocoder.getLatLng(
          document.geoform.geolocation.value,
          function(point) {
            if (!point) {
              alert(geolocation + " not found");
            } else {
              document.geoform.longitude.value = point.x;
              document.geoform.latitude.value = point.y;
            }
          }
        );
      }
    } 

Кстати, три важных момента:

  1. Это против Google Условия обслуживания для геокодирования без отображения результатов на карте Google.См. 10.1.1 (g)
  2. Вы не должны больше заниматься разработкой с v2, она устарела и скоро исчезнет. Вместо этого используйте v3 .
  3. Существует API геокодирования веб-службы , который вы можете использовать, чтобы делать все это на сервере и вообще избежать этой сложности.
...