Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 结合谷歌地图';s searchbox api和geocoder api集成在一个输入中_Javascript_Google Maps_Google Maps Api 3_Geocoding - Fatal编程技术网

Javascript 结合谷歌地图';s searchbox api和geocoder api集成在一个输入中

Javascript 结合谷歌地图';s searchbox api和geocoder api集成在一个输入中,javascript,google-maps,google-maps-api-3,geocoding,Javascript,Google Maps,Google Maps Api 3,Geocoding,我想使用一个输入进行搜索: 搜索关键字 例:“台湾” 搜索经纬度 例:“22,23” searchBox的用途如下: // listen the searchBox input event 'places_changed' const pacInput = document.getElementById('pac-input') const searchBox = new google.maps.places.SearchBox(pacInput) searchBox.addListener('

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

  • 搜索关键字
  • 例:“台湾”

  • 搜索经纬度
  • 例:“22,23”

    searchBox的用途如下:

    // 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) => {
         ...
    })
    
    地理编码器的用途如下:

    // 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) => {
         ...
    })
    
    谷歌地图可以在一个输入中完成这两个功能,有可能将它们结合在一起吗


    (我听过改变的地点。如果没有地点,那么搜索纬度和经度。但我发现一旦地点改变触发,它在结果中总是有一个位置,所以它不会搜索纬度和经度。)

    您可以使用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 };
              }
            }
    

    如果你想让人们理解你想做什么,就发布完整的代码。关于这个问题,有一个问题:你为什么需要地理编码器?您可以使用搜索框搜索坐标。搜索框可以搜索纬度和经度吗?有javascript的示例吗?顺便说一句,现在我检查输入格式(拆分“,”和唯一的数字),以确定要继续手动更改的功能。我似乎能找到坐标。但可能发生的情况是,它“理解”某些坐标,并将其他坐标视为地址或其他任何东西,因此您可能会得到意外和不一致的结果。所以最后,检查字段的值并使用地理编码器可能是个好主意:)谢谢,这就是我现在要做的DGlad这有帮助!请考虑接受我的回答。