2017-09-26 55 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

    相关问题