区别于浏览器中鼠标定位方式,要在地图中定位鼠标位置并将右键弹出的图层定位到页面中
不过问题是google地图在定位的时候有偏差值,所以在使用的时候减去了偏差值
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Google 地图 右键使用</title>
<style>
html,body{height:100%;margin:0;padding:0;}
.left{width:20%;float:left;height:100%;overflow-y:scroll;overflow-x:hidden;}
#map_canvas{height:100%;width:80%;float:left;}
@media print{
html,body{height:auto;}
#map_canvas{height:600px;}
}
</style>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=zh-CN"></script>
<script type="text/javascript">
var $G,$O,$M,$L;
(function(undefined){
O = function (id) {
return "string" == typeof id ? document.getElementById(id):id;
};
MP = {
y:39.9126328872148,
x:116.44053633792112,
point:function(y,x){
return new google.maps.LatLng(y,x);
},
getCanvas:function(id){
var mapid = id?id:'map_canvas';
return document.getElementById(mapid);
},
options:function(center,z){
return {
zoom: z?z:14,
center: center?center:this.getCenter(),
navigationControl: true,
scaleControl: true,
streetViewControl: true,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
},
}
M = {
mark:function(map,latLng,title){
if(title)
return new google.maps.Marker({
icon: this.icon,
position: latLng,
map: map,
title:title
});
else
return new google.maps.Marker({
//icon: this.icon,
position: latLng,
map: map
});
}
}
//event 事件
L = {
listen:null,
add:function(dom,event,fn){
return google.maps.event.addDomListener(dom, event, fn);
}
}
$G = MP;
$O = O;
$M = M;
$L = L;
})();
var map;
function initialize(){
var point = $G.point($G.y,$G.x); //初始中心点
map = new google.maps.Map($G.getCanvas("map_canvas"), $G.options(point,15)); //初始化地图
var mark = $M.mark(map,point,"来吧英雄,捣乱最佳地点");
//初始化右键菜单,在初始化地图中一并初始化了。
var ContextMenuControlDiv = document.createElement('DIV');
var ContextMenuControl = new createContextMenu(ContextMenuControlDiv, map);
ContextMenuControlDiv.index = 1;
/*增加层的方式*/
map.controls[google.maps.ControlPosition.TOP_LEFT].push(ContextMenuControlDiv);
}
/*创建右键菜单*/
function createContextMenu(controlUI,map) {
contextmenu = document.createElement("div");
contextmenu.style.display = "none";
contextmenu.style.background = "#ffffff";
contextmenu.style.border = "1px solid #8888FF";
contextmenu.innerHTML =
"<a href='javascript:'><div class='context'> 放大 </div></a>"
+ "<a href='javascript:'><div class='context'> 缩小 </div></a>"
+ "<a href='javascript:'><div class='context'> 以此为中心放大 </div></a>"
+ "<a href='javascript:'><div class='context'> 以此为中心缩小 </div></a>"
+ "<a href='javascript:'><div class='context'> 以此居中 </div></a>";
controlUI.appendChild(contextmenu);
/*给整个地图增加右键事件监听*/
$L.add(map, 'rightclick', function (event) {
// 起始 方法详细内容
$O("info").innerText = event.latLng.lat()+"\n"+event.latLng.lng();
var ss = "\n\n";
for(var e in event.pixel)
ss = ss+ e+":"+event.pixel[e]+"\n";
$O("info").innerText = $O("info").innerText+ ss;
//结束 方法详细内容
contextmenu.style.position="relative";
contextmenu.style.left=(event.pixel.x-80)+"px"; //平移显示以对应右键点击坐标
contextmenu.style.top=event.pixel.y+"px";
contextmenu.style.display = "block";
});
/*点击菜单层中的某一个菜单项,就隐藏菜单*/
$L.add(controlUI, 'click', function () {
contextmenu.style.display = "none";
});
$L.add(map, 'click', function () {
contextmenu.style.display = "none";
});
$L.add(map, 'drag', function () {
contextmenu.style.display = "none";
});
}
</script>
</head>
<body onload="initialize()">
<div class="left">
<div id="info"></div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<div id="map_canvas"></div>
</body>
<script>
</script>
</html>
- 大小: 149.8 KB
分享到:
相关推荐
谷歌地图,右键弹出菜单功能,实现了地图map的右键菜单和marker的右键菜单,这是参考别人的代码,大家可以在次基础上做一些修改,实现类似的功能
使用高德地图js-api实现绘制圆形、矩形、多边形;右键可删除可自定义菜单;
实现了地图map的右键菜单和marker的右键菜单,这是参考别人的代码,大家可以在次基础上做些修改,感谢原创。
谷歌地图Google Map API中文开发文档 V3
谷歌地图api v3 学习文档,资料查询, 基础学习。
谷歌升级后的地图demo,不包含密钥的开发。仅供借鉴
Google Map api V3 (3.9.12)的离线开发包
谷歌地图google map api v3 ExtDraggableObject可拖拽对象类
扩展openalayers 自定义右键菜单开发,样式可以自行覆盖调整
GoogleMaps API V3离线下载工具及使用.zip 主要对其地图的下载,及自我编制。 离线下完全可以使用,只需先进行地图的下载。 添加了控件,离线下可进行操作。。。
废话不多说了,直接给大家贴代码了。...//右键单击map出现右键菜单事件 } }); //右键单击map出现右键菜单事件 function RightClick(){ //alert('你点击的是地图'); var createMarker = function
谷歌MAP_V3中文详解以及一个简单例子
Google Map API 使用示例
google map v3开发 V3地图搜素,V3地图标注,V3地图多点标注
Google Map API V3 离线开发文档(与Google官网一模一样,经编辑后离线也能照样查看,速度提升一个等级) PS:文件不能重命名,而原因想必你懂的!
针对Google Map最新的API Version3,本文讲解怎么使用JavaScript调用该API,实现在网页中的使用地图的诸多功能。更多细节参考:http://blog.sina.com.cn/s/articlelist_1289503967_4_1.html
google_map_API谷歌地图API
google map v3离线地图资源包,原博文链接源码
详尽的介绍了google map api 并简单的举了几个例子,能帮助你了解Google map 编程