2012-01-24 228 views
0

我到目前爲止一個工作祕密腳本從一個地址得到經度和緯度。 問題是我無法提交,而提交按鈕用於獲取經度和緯度。谷歌地圖api v2經度和緯度的地址問題

所以我想下面: 地址將被放置在一個隱藏的領域。 (由我的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> 
+0

你會得到什麼錯誤? – Unknown

+0

Hello Matrix,我沒有收到錯誤。如果我使用上面的腳本,我會得到長和經。如果我從表單中刪除「返回false」,它會提交,但不會獲得長和經。這就是我想在頁面加載時使用的原因。 (我試過.submit()但沒有任何運氣) –

回答

1

當您提交表單時,要求對地址進行地址解析太遲了。 最好對頁面加載地址進行地理編碼,然後提交表單。

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. 這是對谷歌的Terms of Service不顯示在谷歌地圖的結果進行地理編碼。見10.1.1(g)
  2. 你不應該再用v2進行開發,它已經被棄用並且很快就會消失。 Use v3 instead
  3. 您可以使用一個web service geocoding API在服務器中完成這一切,並完全避免這種複雜性。
相關問題