将谷歌地图的搜索框 API 和地理编码器 API 组合在一个输入中



我想使用一个输入进行搜索:

  1. 搜索关键字

ex:'台湾'

  1. 搜索纬度和经度

ex:'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() {
   ...
})

地理编码器如下:

// by click or any event you want to trigger
const geocoder = new google.maps.Geocoder()
geocoder.geocode({
    location: latLng
  }, (results, status) => {
     ...
})

Google Map可以在一个输入中执行这两个功能,是否可以将它们组合在一起?

(我已经听了变化的地方。如果没有地方,请搜索纬度和经度。但是我发现一旦该地点变化触发,它将始终在结果中占有一席之地,因此它赢了't搜索纬度和经度。)

您可以使用JavaScript进行解决方法。请使用作为参考。我修改了您的代码。您需要添加一个条件,该条件检查是地址还是坐标。

        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 };
          }
        }

最新更新