2016-12-27 86 views
0

我正在谷歌地方api中第一位用戶選擇城市,並在文本字段中輸入地址獲取該城市特定的位置。爲此,我使用了圈子界限。如何動態更改地理位置谷歌地點api

現在,當用戶更改城市時,我需要重新初始化google放置api以應用新的圈子邊界。我使用了以下腳本。

<select name="cities" id="cities" onchange="initialize()"> 
     <option value="0">Select City</option> 
     <option value="1" lat="40.7128" long="74.0059">Newyork</option> 
     <option value="2" lat="34.0522" long="118.2437">Los Angeles</option> 
     <option value="3" lat="42.3601" long="71.0589">Boston</option> 
    </select> 
    <input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on"> 

<script src="http://maps.googleapis.com/maps/api/js?sensor=false&amp;libraries=places" type="text/javascript"></script> 
<script type="text/javascript"> 

    function initialize() 
    { 
     var input = document.getElementById('searchTextField'); 
     var lat = jQuery('#cities option:selected').attr('lat'); 
     var long = jQuery('#cities option:selected').attr('long'); 

     //alert(lat+' == '+long); 

     var geolocation = { 
      lat: lat, 
      lng: long 
     }; 
     var circle = new google.maps.Circle({ 
      center: geolocation, 
      radius: 50 
     }); 

     var options = { 
      componentRestrictions: {country: "us"} 
     }; 

     var temp = new google.maps.places.Autocomplete(input, options); 
     temp.setBounds(circle.getBounds()); 
    } 


    google.maps.event.addDomListener(window, 'load', initialize); 

</script> 

回答

1

您應該提到你所面臨的具體問題,這將幫助我認爲方向是正確的,但無論如何你的代碼看起來很正常所以給它一個去發現這些問題

。當施工LatLngLiteral這樣

var geolocation = { 
     lat: lat, 
     lng: long 
    }; 

通過這個谷歌工作的值預計是數字,而不是string.May時你收到此錯誤「並不是一個經緯度或LatLngLiteral:物業緯度:不是一個數字」因爲typeof lat會給"string"

爲了順應則需要使用它們轉換parseFloat。現在typeof parseFloat(lat)會給"number"

var geolocation = { 
     lat: parseFloat(lat), 
     lng: parseFloat(long) 
    }; 

。由於美國位於格林威治標準時間的西部,因此所有州的經度均爲負值,但您使用的積極性應該是這樣的:

<option value="1" lat="40.7128" long="-74.0059">Newyork</option> 
    <option value="2" lat="34.0522" long="-118.2437">Los Angeles</option> 
    <option value="3" lat="42.3601" long="-71.0589">Boston</option> 
+0

我知道其他結果會顯示區域不匹配,但我需要改變選擇選項的變化邊界。因此,如果區域匹配,它應該顯示結果。 – HungryDB

+0

對不起,我誤解了你的問題。我已經編輯了帖子 – Viney

+0

我已經做出了改變,如經度和parseFloat改變。但我在控制檯中沒有收到任何錯誤。它只是自動完成不起作用,如果我想動態地改變界限。當我提供靜態經緯度,然後長時間工作正常。 – HungryDB