2017-09-26 48 views
-1

我想用一個輸入來搜索結合谷歌地圖的搜索框API和地理編碼API一起:在一個輸入

  1. 搜索關鍵詞

例如: '臺灣'

  • 搜索緯度和經度
  • 例如:'22,23'

    搜索框是用來如下:

    // listen the searchBox input event 'places_changed' 
    const pacInput = document.getElementById('pac-input') 
    const searchBox = new google.maps.places.SearchBox(pacInput) 
    searchBox.addListener('places_changed', function() { 
        ... 
    }) 
    

    地理編碼器使用如下:

    谷歌地圖可以在一個輸入做到這一點兩個特徵,就是它可以將它們結合在一起?

    (我已經聽到了變化的地方,如果沒有地方,然後搜索經度和緯度,但我發現一旦地點變化觸發,它總是會在結果中佔有一席之地,所以它贏了不搜索經度和緯度。)

    +1

    如果您希望人們瞭解您正在嘗試做什麼,請發佈完整代碼。關於這個問題,有一個問題:你爲什麼需要地理編碼器?您可以使用searchBox搜索座標。 – MrUpsidown

    +0

    可以搜索框搜索經緯度嗎?有什麼樣的JavaScript?順便說一句,現在我檢查輸入格式(拆分「,」和唯一的數字),以確定哪個功能手動繼續就地更改。 – KevinHu

    +0

    查看[這裏](http://jsfiddle.net/upsidown/2NhsE/)爲SearchBox的標準實現。我似乎可以搜索座標。然而,可能發生的情況是,它「理解」了某些座標並將其他人視爲地址或其他內容,因此可能會得到意想不到的結果。所以最後,檢查字段的值和使用geocoder可能是一個好主意:) – MrUpsidown

    回答

    3

    您可以使用javascript做一個解決方法。請使用this作爲參考。我修改了你的代碼。您需要添加一個條件來檢查它是否是地址或座標。

     var address = document.getElementById('address').value; 
         var addressSplit = address.split(','); 
         var geo; 
         var addressObj; 
    
         if (addressSplit.length !== 2) { 
          addressObj = { 'address' : address }; 
         } else { 
          var lat = addressSplit[0].replace(/\s/g, ''); 
          var lng = addressSplit[1].replace(/\s/g, ''); 
          if (!isNaN(lat) && !isNaN(lng)) { 
          addressObj = { 'location' : { 'lat' : parseFloat(lat), 'lng' : parseFloat(lng) } }; 
          } else { 
          addressObj = { 'address' : address }; 
          } 
         } 
    
    +0

    謝謝,這就是我現在所做的。 :D – KevinHu

    +0

    很高興幫助!請考慮接受我的答案。 :) – rafon

    相關問題