Google maps api 3 正在尝试部署带有可单击标记的静态自定义地图
我有地图区域的静态图像,我需要用一个可点击的标记覆盖显示它们,上面有多个动态标记。标记必须对应于特定的地理位置。我会知道标记的地理坐标,但它们会经常变化 静态图像必须在周围区域不可见的情况下显示(并且-无缩放、无拖动、无平移等)。例如,美国一个州的地图,没有边界州和多个特别放置的可点击标记。这使得谷歌地图api无法像地图样式定制那样使用(至少对于实际的地图显示) 因此,我的问题是:Google maps api 3 正在尝试部署带有可单击标记的静态自定义地图,google-maps-api-3,Google Maps Api 3,我有地图区域的静态图像,我需要用一个可点击的标记覆盖显示它们,上面有多个动态标记。标记必须对应于特定的地理位置。我会知道标记的地理坐标,但它们会经常变化 静态图像必须在周围区域不可见的情况下显示(并且-无缩放、无拖动、无平移等)。例如,美国一个州的地图,没有边界州和多个特别放置的可点击标记。这使得谷歌地图api无法像地图样式定制那样使用(至少对于实际的地图显示) 因此,我的问题是: 在仍然利用google map api标记功能的情况下,有没有办法做到这一点?或者我必须重写自己版本的标记功能(单
(来源:) 可单击标记并根据特定地理代码定位标记。您的答案是:
收听click/DOM事件:我对这个问题感兴趣。但恐怕你不能做你想要的 至少,你可以用谷歌地图试试这些东西:
1.指定所需的边界(以匹配静态图像)——Google API
2.添加标记——谷歌API
3.禁用可拖动和滚轮缩放--谷歌API
4.在标记上添加单击事件--Google API
5.用静态图像替换地图——谷歌API 问题将是第一步,您很难指定GoogleMap的边界与静态图像的区域完全一致
你可以在谷歌地图上指定一个区域,但是基本上外层空间仍然是一个矩形(谷歌地图本身和LatLngBounds)好的,我想我已经让它工作了。这个概念非常简单:
简单标记
html,正文,#地图画布{
身高:100%;
边际:0px;
填充:0px
}
函数初始化(){
//$(“#映射画布”).hide();
var mylatng=new google.maps.LatLng(-25.363882131.044922);
变量映射选项={
缩放:4,
中心:myLatlng,
disableDefaultUI:true,
可拖动:错误,
禁用双击缩放:真,
键盘快捷键:false,
mapTypeControl:false,
诺克利尔:没错,
overviewMapControl:错误,
泛控制:错误,
旋转控制:错误,
scaleControl:false,
滚轮:错误,
街景控制:错误,
动物控制:错误
}
var map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
marker=新的google.maps.marker({
职位:myLatlng,
地图:地图,
标题:“你好,世界!”
});
google.maps.event.addDomListener(标记,'click',函数(){alert('click')});
//google.maps.event.addDomListener(标记,'mouseover',函数(){alert('mouseover')});
google.maps.event.addDomListener(map、'idle',removeMaps);
}
函数removeMaps(){
setTimeout(函数(){
$(‘img’,‘映射画布’).remove();
$('.gm样式cc.gmnoprint.gm样式cc.gmnoprint').remove()
$(“#地图画布”).show();
$(“#地图画布”).attr('style','background:url(http://web2.nebdev.net/tasks/sandbox/untitled4.png)不重复左上角透明“);
$(“#映射画布覆盖”).hide();
log(marker.getVisible());
},1000);
}
google.maps.event.addDomListener(窗口“加载”,初始化);
加载。。。
是的,我知道地图选项、样式化标记和dom侦听器。这是给我带来问题的自定义地图部分。您可能正在考虑地图覆盖:要添加到下面的答案,您还可以检查如何添加。这将允许您隐藏所有内容,以便仅显示覆盖。同时检查
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Simple markers</title>
<style>
html, body, #map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
function initialize() {
//$('#map-canvas').hide();
var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
var mapOptions = {
zoom: 4,
center: myLatlng,
disableDefaultUI: true,
draggable: false,
disableDoubleClickZoom: true,
keyboardShortcuts: false,
mapTypeControl: false,
noClear: true,
overviewMapControl: false,
panControl: false,
rotateControl: false,
scaleControl: false,
scrollwheel: false,
streetViewControl: false,
zoomControl: false
}
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Hello World!'
});
google.maps.event.addDomListener(marker,'click',function() {alert('Click')});
//google.maps.event.addDomListener(marker,'mouseover',function() {alert('Mouseover')});
google.maps.event.addDomListener(map,'idle',removeMaps);
}
function removeMaps() {
window.setTimeout(function(){
$('img','#map-canvas').remove();
$('.gm-style-cc,.gmnoprint .gm-style-cc,.gmnoprint').remove()
$('#map-canvas').show();
$('#map-canvas').attr('style','background:url(http://web2.nebdev.net/tasks/sandbox/untitled4.png) no-repeat top left transparent');
$('#map-canvas-overlay').hide();
console.log(marker.getVisible());
},1000);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas" style="width:400px;height:400px;"></div>
<div id="map-canvas-overlay" style="width:400px;height:400px;background:url() #CCC;position:absolute;top:0px;left:0px;z-index:10000">Loading...</div>
</body>
</html>