`
happysoul
  • 浏览: 404194 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Google Map API V3 (四) 地图右键菜单

阅读更多
区别于浏览器中鼠标定位方式,要在地图中定位鼠标位置并将右键弹出的图层定位到页面中
不过问题是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
0
0
分享到:
评论

相关推荐

    谷歌地图api右键菜单

    在本文中,我们将深入探讨如何使用谷歌地图API来实现地图上的右键菜单功能。 首先,理解基础概念。在谷歌地图API中,右键菜单通常是通过添加事件监听器到地图实例上实现的。当用户在地图上右击时,这个监听器会被...

    谷歌地图Google Map API V3中文开发文档

    谷歌地图 Google Map API V3 中文开发文档 谷歌地图 Google Map API V3 中文开发文档是 Google 公司提供的一种基于 Web 的地图应用程序接口,允许开发者在自己的网站或应用程序中嵌入谷歌地图,以提供地图检索、...

    高德地图实现绘制覆盖物,自定义右键菜单

    本项目聚焦于利用高德地图js-api实现绘制覆盖物,以及自定义右键菜单的功能。 首先,我们来探讨“绘制覆盖物”这一概念。在高德地图API中,覆盖物是指可以在地图上绘制的各种图形,如点、线、面等。在这个项目中,...

    谷歌地图添加右键菜单

    谷歌地图是一个广泛使用的在线地图服务,它提供了丰富的API让开发者可以自定义功能,包括添加右键菜单。本项目实现了在谷歌地图上添加右键菜单的功能,使得用户可以通过鼠标右键点击地图或地图上的标记(marker)来...

    google map api v3源码

    谷歌地图API V3是Google提供的一种用于在网页上嵌入交互式地图的服务,它基于JavaScript编程语言,允许开发者创建各种地图应用。这个源码可能是谷歌地图API V3的一个示例项目,不含任何特定的API密钥,因此可以作为...

    百度地图给map添加右键菜单(判断是否为marker)

    在本文中,我们将深入探讨如何在百度地图API中为地图和marker添加右键菜单功能,以及如何进行删除和更新操作。首先,让我们了解百度地图API的基本概念。 百度地图API是百度提供的一套JavaScript接口,允许开发者在...

    openlayers3+ 地图右键

    本篇文章将详细探讨如何在OpenLayers中自定义地图右键菜单,以实现更丰富的地图交互体验。 首先,理解OpenLayers的基本架构至关重要。OpenLayers是一个开源JavaScript库,用于创建交互式地图应用。它支持多种地图...

    谷歌地图API-google map api v3

    ### 谷歌地图API V3 - 详细知识点解析 #### 概述 谷歌地图API V3(Google Maps API V3)是谷歌提供的一套强大的工具和服务集合,旨在帮助开发者在网页上集成交互式地图。它支持多种功能,如自定义地图样式、添加...

    Openlayers扩展右键菜单

    "OpenLayers扩展右键菜单"是一个项目,旨在帮助开发者为他们的OpenLayers地图应用添加自定义的右键上下文菜单。这个扩展允许用户在地图上点击右键时触发特定的操作,例如测量距离、添加图层、获取地图坐标等。 开发...

    Google Map api V3 (3.9.12)的离线开发包

    Google Map API V3(3.9.12)是谷歌提供的一个用于在网页上嵌入交互式地图的服务,它是Google Maps JavaScript API的第三个主要版本。这个离线开发包允许开发者在没有网络连接的情况下进行地图应用的开发和测试,这...

    openlayers右键菜单

    这个“不错的demo”可能就是展示了如何在OpenLayers地图上添加并使用右键菜单的一个实例。下面我们将深入探讨如何在OpenLayers中创建和使用右键菜单。 首先,我们需要了解JavaScript中的事件监听。在OpenLayers中,...

    Google Maps API V3 中文参考文档(JavaScript)

    在 Google Maps API V3 中,Map 是地图的核心组件,提供了多种配置选项和事件监听器。开发者可以使用 MapOptions 对象来配置地图的基本属性,如中心点、缩放级别、地图类型等。同时,MapTypeId 对象提供了多种地图...

    优化后的CEdit自定义或屏蔽右键菜单派生类

    在某些情况下,我们可能需要对CEdit控件进行定制,例如改变其默认行为,或者提供特定的功能,如禁用或自定义右键菜单。在标题提到的“优化后的CEdit自定义或屏蔽右键菜单派生类”中,我们将探讨如何通过派生CEdit类...

    ASP.NET 鼠标右键菜单 右键菜单 ASP.NET鼠标右键菜单 C#右键菜单

    这通常涉及到一个Web服务(WebMethod)或API接口,它根据用户的上下文信息返回相应的菜单项。 在C#中,你可以创建一个Web服务方法: ```csharp [WebMethod] public static string GetContextMenuItems(string ...

    经典教程:JavaScript调用Google Map API V3

    JavaScript调用Google Map API V3是一项常见的Web开发任务,它允许开发者在网页中嵌入交互式地图,并根据需求进行自定义。以下是对这个经典教程的详细解析: 1. **目标** - 整个教程旨在教会读者如何利用...

    为对话框应用程序添加右键菜单

    对话框通常不支持系统默认的右键菜单,但为了增强用户体验,我们可以通过编程实现为对话框添加自定义的右键菜单。本文将详细讲解如何为对话框应用程序添加右键菜单。 首先,我们需要了解Windows消息处理机制。在...

    google map api v3 ExtDraggableObject

    谷歌地图API V3是Google为开发者提供的一种强大的工具,用于在网页上集成和操作地图。在API中,`ExtDraggableObject`是一个自定义扩展类,它允许用户将地图上的对象(如标记、覆盖物等)进行拖放操作,极大地增强了...

    基于Google Map API的简单地图

    在IT行业中,Google Map API是一个强大的工具,它允许开发者集成地图功能到他们的应用程序中,提供丰富的地理定位服务。本文将详细解析如何利用Google Map API实现"基于Google Map API的简单地图"的功能,包括显示...

    Google Map API 使用示例

    Google Map API 是一款强大的工具,它允许开发者在自己的网站或应用程序中嵌入地图功能,提供定位、导航、地理编码、路线规划等多种服务。本示例将深入探讨如何使用 Google Map API,帮助你理解和掌握其核心概念及...

Global site tag (gtag.js) - Google Analytics