2012-04-19 26 views
0

我一直在使用Google地圖API中的Geocoder服務爲我的地圖上的搜索框提供動力。我希望允許用戶通過地址,城市和座標以及其他任何支持的內容自由搜索。直到最近,如果我將緯度/經度座標傳遞給地理編碼器,它將簡單地向我返回這些特定座標的結果,但最近它已更改爲執行反向查找併爲我提供最接近座標的地址。我實際上希望將位置直接放在座標上,因爲這是最相關的。GMaps API:通過Lat/LonCoordinates和地址搜索地圖

任何想法如何從搜索框中解析出各種輸入形式的座標,或讓地理編碼器恢復到以前的行爲?

+0

你能發表一些代碼來證明你在做什麼嗎? – javram 2012-04-19 21:10:54

+0

以下是我目前正在做的事情:[代碼粘貼](http://pastebin.com/LhwkpceK) – ertyu 2012-04-19 21:36:40

+0

因此,要澄清您的問題,您要解釋的是,如果您輸入一個緯度/您使用「txt_googlesearch」標識創建的輸入,您希望地圖能夠集中在該特定位置?而且它曾經通過地理編碼器來這麼做,但現在正在進行反向查找? – javram 2012-04-19 21:43:42

回答

0

我不確定爲什麼它會更改爲顯示反向地理編碼,而沒有看到代碼。不過,我建議使用Places API Library的Autocomplete feature

+0

地方根本不處理我所能看到的座標。 – ertyu 2012-04-19 21:31:56

+0

對不起,你是對的,我錯了你的問題。 – 2012-04-20 18:02:32

0

難道你不能只是使用正則表達式來檢查輸入的輸入是一個緯度/經度對呢?然後如果它解析那對並直接導航到座標。例如:

var latLngRegex = /^(\-?\d+(\.\d+)?),\s*(\-?\d+(\.\d+)?)$/; //Regex for checking that it is a latlng pair that has been entered 

    var address = document.getElementById("txt_googlesearch").value; 
    if (address=='' || address=='Search') { 
    return; 
    } 
    if (latLngRegex.test(address)) //Run the regex against the entered value 
    { 
    var coords = address.split(","); //Split the address into 2 decimal values 
    var mapPoint = new GLatLng(parseInt(coords[0]), parseInt(coords[1])); //Create a gLatLng from the split values 
    map.setCenter(mapPoint); //Move the map to the entered location 
    return; 
    } 
    //Call Geocoder as before 
+0

是的,這當然是一種選擇,但有很多不同的座標格式需要解析。 – ertyu 2012-04-20 13:41:51