如何通过在JavaScript中单击映射来填充字符串数组?

如何通过在JavaScript中单击映射来填充字符串数组?,javascript,arrays,google-maps,google-maps-api-3,Javascript,Arrays,Google Maps,Google Maps Api 3,我想在JavaScript中单击地图时收集信息。我正在使用谷歌地图API。当我在地图上右键单击时,一个反向地理编码工具会工作,并获取单击点的信息 我想做的是,当我点击地图时,我想在列表中看到这些地理编码点的名称和一些属性 有可能吗 在这里我分享我的一些代码 这是点击并获取坐标 google.maps.event.addListener(map, "rightclick", function (event) { var lat = event.latLng.lat(); var l

我想在JavaScript中单击地图时收集信息。我正在使用谷歌地图API。当我在地图上右键单击时,一个反向地理编码工具会工作,并获取单击点的信息

我想做的是,当我点击地图时,我想在列表中看到这些地理编码点的名称和一些属性

有可能吗

在这里我分享我的一些代码

这是点击并获取坐标

google.maps.event.addListener(map, "rightclick", function (event) {
    var lat = event.latLng.lat();
    var lng = event.latLng.lng();
    alert(markersinfo);
    document.getElementById("latlng").value = lat.toFixed(5) + ', ' + lng.toFixed(5);
    geocodeLatLng(geocoder, map, infowindow);
});
这里是地理编码

function geocodeLatLng(geocoder, map, infowindow) {
    var input = document.getElementById('latlng').value;
    var latlngStr = input.split(',', 2);
    var latlng = {lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1])};
    geocoder.geocode({'location': latlng}, function (results, status) {
        if (status === google.maps.GeocoderStatus.OK) {
            if (results[1]) {
                //map.setZoom(11);
                var marker = new google.maps.Marker({
                    position: latlng,
                    map: map
                });
                markersinfo.push(marker);
                infowindow.setContent(results[1].formatted_address);
                infowindow.open(map, marker);
            } else {
                window.alert('No results found');
            }
        } else {
            window.alert('Geocoder failed due to: ' + status);
        }
    });
}

我尝试创建一个名为markersinfo[]的数组,并尝试将标记推入该数组,但我意识到我只是向数组发送对象,而不是信息。我需要此markersinfo[]数组中每个单击点的地理编码字符串、纬度和经度。

您可以在将信息放入信息窗口的同一区域收集信息。只需将lat/long等保存到字符串或数组中。您还不太清楚应该显示哪些内容(lat/long除外),或者单击哪些内容会触发显示。因此,需要调整此代码以满足您的特定需求

例如:

var contentString = "";
if (results[1]) {
//... 
  var contentString += "Location: "  + latlng + "<br />";
}
//perhaps add trigger this on an event, depending on what you want.
$('#myDiv').append(contentString);
var contentString=“”;
如果(结果[1]){
//... 
var contentString+=“位置:”+latlng+“
”; } //根据您的需要,可能会在事件上添加此触发器。 $('#myDiv').append(contentString);
然后您的div保存内容:

<div id="myDiv"></div>

所以,不要使用
google.maps.Marker
对象,而是在
markersinfo
数组中保存
lat
lng
address
属性,对吗?如果是这样,下面的示例显示了如何实现它:

函数initMap(){
var map=new google.maps.map(document.getElementById('map'){
缩放:12,
中心:{
lat:-28.643387,
液化天然气:153.612224
},
mapTypeControl:true
});
var infowindow=new google.maps.infowindow({
内容:“”
});
var geocoder=new google.maps.geocoder();
var markersinfo=[];
google.maps.event.addListener(映射,“右键单击”,函数(事件){
GeocoderAtlng(geocoder,event.latLng,
职能(结果){
如果(结果[0]){
var marker=new google.maps.marker({
位置:event.latLng,
地图:地图
});
infowindow.setContent(结果[1]。格式化的\u地址);
信息窗口。打开(地图、标记);
markersinfo.push({
“地址”:结果[0]。格式化的\u地址,
“lat”:event.latLng.lat(),
“lng”:event.latLng.lng()
});//保存信息
document.getElementById('output').innerHTML=JSON.stringify(markersinfo);
}否则{
window.alert(“未找到结果”);
}
},
功能(状态){
window.alert('地理编码器由于:'+状态而失败);
});
});
}
功能geocoderlatlng(geocoder,latLng,success,error){
变量位置={
lat:latLng.lat(),
lng:latLng.lng()
};
地理编码({
“位置”:位置
},功能(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
成功(结果);
}否则{
错误(状态);
}
});
}
html,
身体{
高度:220px;
保证金:0;
填充:0;
}
#地图{
高度:220px;
}


尝试使用
上下文菜单
而不是
右键单击
。请澄清点击什么会触发此信息显示。您应该能够将标记的详细信息收集到一个数组中(在您的代码中,在将标记推到markersinfo上之前),然后在单击某个内容时显示信息数组的内容。谢谢您的回答。实际上,你要我使用的信息窗口只是一个简单的框,显示在地图上单击的点上。当用户单击另一个点时,上一个框将消失并显示在新点上。我想要一个新的框菜单来收集点,以便以后我可以玩这个列表,因为我想,但这是下一步。我希望这次我能更好地解释自己。这是我第一次尝试JavaScript。