当前位置: 首页 > 知识库问答 >
问题:

从php在google map api中通过城市名称自动填充州和国家

姜森
2023-03-14

我已经在搜索上实现了谷歌地图API。我的代码工作正常,直到自动生成的位置,但我想要这样的设施,我可以得到准确的位置,只提供城市名称,而不是整个格式的字符串。

对于EX:

请检查此映像http://demo.ncryptedprojects.com/nct_bnb_clone_new/untitled.png

我正在输入城市名称孟买在搜索框和谷歌地图API检索所有值在下拉。当某人没有选择任何值从下拉和直接按回车后的城市名称,我不能得到准确的搜索城市孟买在地图。我真正想做的是,当某人输入城市名称,然后搜索它应该自动搜索第一个出现从下拉像“孟买马哈拉施特拉邦,印度”

HTML表单

<input name="location" id="location" type="text"/>

Google map API

<script src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>

$(function() {
            var e;
            e = $('.search-form input[name="location"]')[0];
            return new google.maps.places.Autocomplete(e, {
                types: ["geocode"]
            })

    });

共有1个答案

万俟高峻
2023-03-14

这很棘手,因为默认情况下,google places将查找地图中心附近的位置,而不管下拉菜单中的建议如何。

因此,您必须从下拉列表中找到第一个建议,document.queryselector('.pac-item')-提取位置并使用geocoder查找该位置的latlng。

提取位置的代码:

function extractLocation(item) {
    var text = item.innerText || item.textContent;
    var upper = text.toUpperCase();
    var result='';
    for (var i=0;i<text.length;i++) {
        if (text[i]==upper[i]) {
            result+=' ';
        }
        result+=text[i];
    }
    return result;
}

在searchbox enter上,选择第一个建议,提取位置,通过地理编码器查找latlng并放置标记:

input.onkeyup = function(e) {
   var code = (e.keyCode ? e.keyCode : e.which);
   var places = searchBox.getPlaces();
   if (code == 13 && places!=[]) {
     var firstSuggestion = document.querySelector('.pac-item');
     var query = extractLocation(firstSuggestion);
     geocoder.geocode({"address":query }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
          clearMarkers();   
          var latLng = new google.maps.LatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng());
          var marker = new google.maps.Marker({
             map: map,
             title: results[0].address_components[0].long_name,
             position: latLng,
          });
          markers.push(marker);
          map.setCenter(latLng);
          map.setZoom(10);
       }
     });
   } 
}

工作小提琴->http://jsfidle.net/cdnt8/

 类似资料:
  • 在我的前端(反应)需求之一,我需要获得全球国家名称,国家名称,城市名称,位置标识,纬度和经度,一旦一个地方从自动完成建议中被选中。我能够从响应的几何键中获得城市名称(从名称键)、地点ID、纬度和经度。我使用这个谷歌脚本使用的地方api服务= [“地区”、“政治”],{“长名”:“班加罗尔市区”、“短名”:“班加罗尔市区”、“类型”:[“行政区”二级”、“政治”],{“长名”:“卡纳塔克邦”、“短名

  • 问题内容: 我正在Swift3中开发应用程序,但遇到字母问题,我找不到答案。 我怎么知道基于纬度和经度的城市名称和国家简称? 问题答案: 我建议将Google Maps API 与您的项目集成。如果您这样做,则可以使用Google提供的反向地理编码来完成您的任务。 此外,谷歌还有用于IOS开发的Google Maps SDK ,这也是值得考虑的。 UPD: 您可以在不将地图集成到项目中的情况下做到

  • 问题内容: 我正在使用google autocomplete place javascript返回搜索框的建议结果,我只需要显示与输入字符有关的城市和国家/地区,但google api会提供很多我不需要的常规地方结果,所以限制结果只显示城市和国家。 我正在使用以下示例: 问题答案: 您可以尝试国家/地区限制 更多信息: ISO 3166-1 alpha-2 可用于将结果限制为特定组。当前,您可以使

  • 在论坛上搜索了几天,我仍然无法理解它... null (不需要其他的东西,因为其余的是通过lat/lon坐标运行的)。 在登录时,我希望他们 通过谷歌地图上的标记来设置坐标(单点击和只有1个标记,第二次点击标记会删除第一个标记,不确定我是否会使用传感器....)

  • 问题内容: 我有一个php页面,我想从国家,州和城市列表中选择一个位置。该页面包含用于用户注册的其他数据(名称,电子邮件等),因此在选择框刷新时,我不想刷新页面或其他任何内容。当前,每个选择框仅加载国家,州或城市的完整列表。我希望将它们链接起来,所以我没有重复的城市名称(不同州或国家/地区的名称相同)。 位置存储在数据库中,并在加载时传递到页面。然后将它们循环并添加到选择框中: 数据库结构非常简单

  • 我有一个表格,上面有国家、州、城市、城市的纬度/经度。我试图构建一个json字符串,如下所示。 数据库查询结果在一个数组中:JSONData。我有国家的代码。不确定如何添加一个州如果它不存在和一个城市如果它不存在与城市的纬度和经度(我有的部分???)