点击操作不适用于 Google 地图中的以下代码
Click action is not working for the below code in Google Maps
谁能告诉我这段代码有什么问题? 地图随即加载,但用户的单击操作不会打开info_window或将地图重新居中到单击的点。
我希望每当用户单击地图时,位置的地址都会作为info_window弹出。
<!DOCTYPE html>
<html>
<head>
<title>Accessing arguments in UI events</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
html, body {
height: 100%;
margin: 0px;
padding: 0px
}
#map-canvas {
height: 60%; width: 60%
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3&libraries=geometry&key=MY_KEY&sensor=true">
</script>
<script type="text/javascript">
var geocoder;
var map;
var info_win;
var pos;
var marker;
function initialize()
{
google.maps.visualRefresh = true;
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(-34.397, 150.644);
var mapOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
google.maps.event.addListener(map, 'click', function(evt) {
pos = evt.latLng;
map.setCenter(pos);
geocoder.geocode({'location': pos}, function(results, status)
{
if(status == google.maps.GeocoderStatus.OK)
{
marker = new google.maps.Marker
({
map: map,
position: pos
});
info_win = new google.maps.InfoWindow
({
content: results[0].formatted_address,
});
info_win.open(map,marker);
}
else
{
alert("Could not load");
}
});
});
}
</script>
</head>
<body>
<div id="map-canvas"></div>
</body>
</html>
第一个问题:您正在将单击侦听器添加到初始化函数之外的映射中,因此它是在映射初始化之前添加的:
<script type="text/javascript">
var geocoder;
var map;
var info_win;
var pos;
var marker;
function initialize()
{
google.maps.visualRefresh = true;
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(-34.397, 150.644);
var mapOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
google.maps.event.addListener(map, 'click', function() {
pos = map.getPosition();
map.setCenter(pos);
geocoder.geocode({'location': pos}, function(results, status)
{
marker = new google.maps.Marker
({
map: map,
position: pos
});
info_win = new google.maps.InfoWindow
({
content: results[0].formatted_address,
});
infowindow.open(map,marker);
});
});
}
</script>
之后你会发现google.maps.Map对象没有getPosition方法。它确实有一个 getCenter 方法,但您可能希望改用单击事件的 latLng 属性。
google.maps.event.addListener(map, 'click', function(evt) {
pos = evt.latLng;
map.setCenter(pos);
并修复打开info_win的代码以打开您创建的google.maps.InfoWindow:
info_win = new google.maps.InfoWindow
({
content: results[0].formatted_address,
});
info_win.open(map,marker);
相关文章:
- 谷歌地图Api和JS代码不工作
- 谷歌地图&地理代码
- 谷歌地图代码不起作用
- 谷歌地图,基于国家代码可视化国家
- 谷歌地图自动完成,即使使用工作代码也无法工作
- 如何通过JavaScript代码显示谷歌地图并在设备上获取坐标
- 谷歌地图 v2 到 v3 代码
- 谷歌地图背后的代码
- 在代码笔中嵌入谷歌地图
- 我的代码在下面,我想更改 ID 与地图外部的
- 使用纬度和经度代码脚本生成谷歌地图
- 我的谷歌地图代码有问题
- 点击操作不适用于 Google 地图中的以下代码
- 如何将可嵌入的 Google 地图导出到等效的 Map API JavaScript 代码中
- 谷歌地图多个标记.我的代码有什么问题
- 谷歌地图API:显示代码中的鼠标悬停窗口
- 修改谷歌地图 API 代码
- 必应地图,查找多个地理代码搜索结果(你的意思是:功能)
- 谷歌地图代码显示当前位置,并在Php:-Firefox中触摸时创建新标记
- 如何在地图API v3代码点火器上设置cusctom多标记