Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.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 点击谷歌地图API并获取地址_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 点击谷歌地图API并获取地址

Javascript 点击谷歌地图API并获取地址,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,下面的代码允许在单击时获取坐标。 但是如何通过谷歌地图API在地图上点击获取地址、城市名称、地区名称或国家? var mylatng=new google.maps.LatLng(41.38,2.18); var myOptions={zoom:13,center:mylatng} var map=new google.maps.map(document.getElementById(“地图画布”),myOptions); google.maps.event.addListener(映射,'c

下面的代码允许在单击时获取坐标。 但是如何通过谷歌地图API在地图上点击获取地址、城市名称、地区名称或国家?

var mylatng=new google.maps.LatLng(41.38,2.18);
var myOptions={zoom:13,center:mylatng}
var map=new google.maps.map(document.getElementById(“地图画布”),myOptions);
google.maps.event.addListener(映射,'click',函数(event){alert(event.latLng);})
html,主体,#地图画布{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}

您可以通过地理编码器传递
事件。latLng
以获取地址:

var myLatlng = new google.maps.LatLng(41.38, 2.18);
var myOptions = {
  zoom: 13,
  center: myLatlng
}
var map = new google.maps.Map(document.getElementById("map-canvas"), myOptions);
var geocoder = new google.maps.Geocoder();

google.maps.event.addListener(map, 'click', function(event) {
  geocoder.geocode({
    'latLng': event.latLng
  }, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      if (results[0]) {
        alert(results[0].formatted_address);
      }
    }
  });
});

您无法仅通过谷歌api中的lat、lng获得一个结果,但您可以通过搜索lat、lng和半径内的关键字获得一些结果

获取特定地点信息的唯一方法是通过其placeID进行搜索

    var myLatlng = new google.maps.LatLng(41.38,2.18);
var myOptions = { zoom: 13, center: myLatlng}
var map = new google.maps.Map(document.getElementById("map-canvas"), myOptions);
var infoWindow;
var service;
google.maps.event.addListener(map, 'click', function(event) {
    service = new google.maps.places.PlacesService(map);
    infoWindow = new google.maps.InfoWindow();
    var request = {
        location: event.latLng,
        keyword: 'food',
        radius:500
    };
    service.radarSearch(request, callback);

});
function callback(results, status) {
    if (status !== google.maps.places.PlacesServiceStatus.OK) {
        console.error(status);
        return;
    }
    for (var i = 0, result; result = results[i]; i++) {
        addMarker(result);
    }
}

function addMarker(place) {
    var marker = new google.maps.Marker({
        map: map,
        position: place.geometry.location,
        icon: {
            url: 'http://maps.gstatic.com/mapfiles/circle.png',
            anchor: new google.maps.Point(10, 10),
            scaledSize: new google.maps.Size(10, 17)
        }
    });

    google.maps.event.addListener(marker, 'click', function() {
        service.getDetails(place, function(result, status) {
            if (status !== google.maps.places.PlacesServiceStatus.OK) {
                console.error(status);
                return;
            }
            infoWindow.setContent(result.name+"<br>"+result.formatted_address+"<br>"+result.formatted_phone_number);
            infoWindow.open(map, marker);
        });
    });
}
var mylatng=new google.maps.LatLng(41.38,2.18);
var myOptions={zoom:13,center:mylatng}
var map=new google.maps.map(document.getElementById(“地图画布”),myOptions);
var信息窗口;
var服务;
google.maps.event.addListener(映射,'click',函数(事件){
服务=新的google.maps.places.PlacesService(地图);
infoWindow=new google.maps.infoWindow();
var请求={
地点:event.latLng,
关键词:“食品”,
半径:500
};
雷达搜索(请求、回调);
});
函数回调(结果、状态){
if(status!==google.maps.places.PlacesServiceStatus.OK){
控制台错误(状态);
返回;
}
for(变量i=0,结果;结果=结果[i];i++){
添加标记(结果);
}
}
功能添加标记(位置){
var marker=new google.maps.marker({
地图:地图,
位置:place.geometry.location,
图标:{
网址:'http://maps.gstatic.com/mapfiles/circle.png',
主播:新谷歌地图点(10,10),
scaledSize:新的google.maps.Size(10,17)
}
});
google.maps.event.addListener(标记'click',函数(){
service.getDetails(位置、功能(结果、状态){
if(status!==google.maps.places.PlacesServiceStatus.OK){
控制台错误(状态);
返回;
}
infoWindow.setContent(result.name+“
”+result.formatted\u address+“
”+result.formatted\u phone\u number); 信息窗口。打开(地图、标记); }); }); }

传递
事件。通过地理编码器进行latLng
可能是一个选项。可能重复感谢@putvande!你知道每次我们在地图上改变位置(即平移/缩放)时,如何在地图中心的城市名称中自动显示吗?对不起,我不知道如何在头顶显示。可能值得搜索,因为可能会有答案。你可以使用infowindow,然后放在里面,看看我的答案你可以按城市而不是食物搜索吗?注意结果回调函数中的参数,它可能包含很多结果。在最后一部分中,您可以使用singleresult find more information@MaYubo发布一个实时演示以供将来参考(这里是jsfiddle还是widget)?
 m is event =====>
 code here
 const latlng = {
lat: parseFloat(e.lat),
lng: parseFloat(e.lng),};

m.view.google.maps.Geocoder.prototype.geocode({ location: latlng },
function(results, status) {
if (status =='OK') {
  if (results[1]) {
    alert(results[1].formatted_address);
  }
}});