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

Google Map API V3 (五) Polygon添加鼠标悬浮TIP(闭包传参的活用)

阅读更多
这里利用google的监听事件,增加鼠标悬浮,移动,移出的3个事件,为地图添加悬浮提示框
原因是默认只有marker上面才有悬浮显示
这里比较恶心的是调用不到系统的鼠标位置,显示的是 undefined,所以很无语的用了google的event['Ra']这个元素,里面有各种鼠标位置,如果是全屏还比较容易使用,但是对于地图来说,一般都是嵌在网页的某个位置,只能恶心的去判断位置了
这次没有用原来的方法精简代码,主要是能弄出来东西就好,调用什么的就交给别人去处理了

要说的是google的google.maps.event.addDomListener方法其实就是一个闭包的实现,给对象添加事件
但是常见的闭包传参很容易见到的是循环以后发现调用的时候永远都是显示最后一次负值的文本
这个是因为js加载的问题,先初始化所有的var变量,然后才会去加载function
此时变量在传入function的时候只会是最后一次赋值的参数会被调用到,作用域的问题,因为闭包调用不到外部参数值,具体的问题只要写过类似方法的人都会知道。

最后上图上代码

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html; charset=gbk"/>
<title>Polygon添加鼠标悬浮TIP</title>
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=geometry"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<style type="text/css">
/*==========================================*/
#tooltip{
	float:left;
	position:absolute;
	border:1px solid #333;
	background:#f7f5d1;
	padding:1px;
	color:#333;
	display:none;
}
/*==========================================*/
</style>

<script type="text/javascript">

  function initialize() {
    var myLatLng = new google.maps.LatLng(39.142842478062505, 117.1966552734375);
    var myOptions = {
      zoom: 8,
      center: myLatLng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    var pg;

    var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);

	var triangleCoords = google.maps.geometry.encoding.decodePath("sjttF{uxkUf|CyiK?uxJbnJoyCtvDivIpeGytA??duBidPnoCe~E`sG_fBzxFdwBa{Ah}Lps@~zKrbCn|S`hIbwB`mb@ogJrhBi}Lp{Tja@~kKkdPusL}sHv}Cys^|~g@r_Np~Yg|i@f`Z|c|@bwVufQtjQn`G?baV~lm@jvIloNvgeAstMnnMz}Fl|S_pSh}Lx_Dnq]a|Nnr@?baVk_`@d~EuwV{bH_oAsmTwcRsqG?rqGst[dPmbMhoFmn^tjDcsXelLq_FcsOd~JewBfcCmq]wuUe~EwnOdPsuB_iRwbJn|SoxTuqGyyOihCmxFsmTixFelLadN?");

    // Construct the polygon
    pg = new google.maps.Polygon({
      paths: triangleCoords,
      strokeColor: "#FF0000",
      strokeOpacity: 0.8,
      strokeWeight: 2,
      fillColor: "#FF0000",
      fillOpacity: 0.35
    });

	//面加入页面中
	pg.setMap(map);


	/*==========================================*/
	pg.title="标题";	//这里是标题,Listener闭包无法读取,只能在外部给方法添加
	/*==========================================*/
	//pg 地图面
	//鼠标悬浮
	google.maps.event.addDomListener(pg, "mouseover", function(event){
		var myTitle = this.title;
	    var tooltip = "<div id='tooltip'>"+ myTitle +"<\/div>"; //创建 div 元素
		$("body").append(tooltip);	//把它追加到文档中
		$("#tooltip").css({
			"top": (event['Ra'].pageY+21) + "px",
			"left": (event['Ra'].pageX+10)  + "px"
		}).show();
	});
	
	//鼠标离开
	google.maps.event.addDomListener(pg, "mouseout", function(){
		$("#tooltip").remove();
	});

	//鼠标移动
	google.maps.event.addDomListener(pg, "mousemove", function(event){
		$("#tooltip").css({
			"top": (event['Ra'].pageY+21) + "px",
			"left": (event['Ra'].pageX+10)  + "px"
		});
	});
	/*==========================================*/

  }
</script>
</head>
<body onload="initialize()">
	<div id="map_canvas" ></div>
</body>
</html>





----------------------- 2017-05 -------------------
当初偷懒用了他内置的方法,后来方法失效了也就一直没改
引用
//鼠标移动
google.maps.event.addDomListener(pg, "mousemove", function(event){
$("#tooltip").css({
"top": (event.y+21) + "px",
"left": (event.x+10)  + "px"
});
});


大概是这样,由于现在谷歌用不了,补上这个留个念想吧。。。
具体获取鼠标的坐标自己根据浏览器再调整吧,印象中 +21 和 +10 是为了修正地图不精确的问题
  • 大小: 85.9 KB
分享到:
评论
1 楼 农村劳动力 2014-06-10  
很赞,学习了,我正在做google map,你有QQ吗,和你交流下,谢谢

相关推荐

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

    谷歌地图 Google Map API V3 中文开发文档提供了一个详细的中文开发指南,涵盖了谷歌地图 Google Map API V3 的使用方法、相关类库、事件处理等方面的知识点。开发者可以根据自己的需求,选择合适的组件和方法来创建...

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

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

    谷歌地图API-google map api v3

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

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

    Google Maps API V3 中文参考文档(JavaScript) Google Maps API V3 是 Google Maps 提供的一款强大的地图应用程序接口,允许开发者在网站或应用程序中轻松嵌入谷歌地图。该 API 的 JavaScript 版本提供了丰富的...

    GoogleMap V3 中文 教程

    Google Map V3是Google Maps API的一个重要版本,主要针对Web开发,提供了一整套用于在网页中集成地图、定位、路线规划等功能的工具。这个中文教程可以帮助开发者理解和运用V3版本的API,即便在无法访问互联网的情况...

    googleMap V3 中文API

    在“Google_Maps_JavaScript_API_V3中文手册.pdf”中,你可以找到关于如何使用谷歌地图API V3的详细指南。以下是一些关键知识点的概述: 1. **初始化地图**: - `google.maps.Map`对象是地图的核心,你需要创建一...

    Google-Map-Api.rar_google map_google map api

    使用`google.maps.Polygon`、`google.maps.Polyline`、`google.maps.Circle`等对象,可以绘制多边形、线和圆等形状,用于表示区域、路径等。 8. **图层与服务** 地图图层可以叠加卫星图像、地形图、交通状况等。...

    谷歌MAP API_V3.pdf

    ### 谷歌Maps API V3 知识点解析 #### 一、概述 Google Maps JavaScript API V3 是一个强大的工具包,允许开发者在网页上嵌入交互式地图。此版本相比之前的版本提供了更多的功能和更好的性能。通过API,用户能够...

    [免费]Google Maps JavaScript API V3中文版参考手册.rar

    使用API,开发者可以轻松地在网页上嵌入地图。通过设置`&lt;div&gt;`元素,并指定其ID,然后在JavaScript中调用`google.maps.Map`构造函数,传入容器ID和地图选项,如中心点坐标、缩放级别等,即可创建地图实例。 ```...

    Google Maps JavaScript API V3 详细教程

    《Google Maps JavaScript API V3 详细教程》 Google Maps JavaScript API V3 是一款强大的工具,允许开发者在网页中集成互动式地图,为用户提供丰富的地理位置体验。API 的第三版相较于第二版进行了更新和优化,...

    Google Map v3 官方实例

    在IT行业中,Google Maps API v3 是一个广泛使用的工具,用于在网页上集成地图功能。这个官方实例集合是由用户手工整理的,对于开发者来说是一份宝贵的资源,可以帮助他们理解和掌握如何利用Google Maps API v3来...

    GoogleMap 中文API + 示例

    - `google+map+api.chm`:这通常是一个帮助文档,包含了API的详细参考信息和技术支持,对于深入理解和使用API非常有帮助。 以上是对GoogleMap中文API的基本介绍和常用功能,开发者可以根据需求进一步探索API提供的...

    GOOGLE MAPS API V3

    Google Maps JavaScript API V3 是一个强大的工具,允许开发者在网页上集成谷歌地图的功能,提供丰富的交互式地图体验。这个API版本带来了许多改进和新特性,使得开发更加高效和灵活。以下是对主要知识点的详细说明...

    Google map 谷歌地图 Google地图 V3 第三版

    **谷歌地图API V3详解** 谷歌地图API(Google Maps API)是谷歌提供的一套用于在网页上嵌入交互式地图的开发工具。V3版本是其一个重要的更新,旨在提高性能、简化API接口并减少对JavaScript库的依赖。这篇博文将...

    Google_map_JavaScript_API_V3

    初始化地图是使用API的第一步。这涉及到创建一个新的`google.maps.Map`对象,并指定一个HTML元素作为地图的容器。例如: ```javascript var map = new google.maps.Map(document.getElementById('map-canvas'), {...

    vue2googlemap基于Vue2x和google地图组件

    Vue2googlemap是一个专门为Vue 2.x框架设计的插件,它允许开发者在Vue应用中无缝集成Google Maps API。这个插件将Google Maps的强大功能与Vue的声明式渲染相结合,为开发者提供了更方便的方式来创建交互式的地图应用...

    Googlemap_API教程

    这篇"Googlemap_API教程"将带你深入了解如何利用API接口来实现各种地图功能。 1. **API接口介绍**:API(Application Programming Interface)是软件之间的桥梁,Google Maps API就是Google提供的一个接口,允许...

    google map jsv3 示例

    在IT行业中,Google Maps JavaScript API V3(简称jsv3)是开发人员广泛使用的工具,用于集成地图功能到Web应用程序中。这个API提供了丰富的功能,包括地图显示、标记定位、路径绘制、地理编码、信息窗口等。下面...

    Android_Google_Map.rar_Google api_android_android google map_and

    本文将深入讲解如何进行Android Google Map的开发入门,从搭建环境、申请API Key到关键类的使用。 首先,我们需要**搭建环境**。在Android Studio中,确保你已经更新到最新版本,并安装了Android SDK。在项目级...

    Google Maps JavaScript API V3中文版参考手册

    ### Google Maps JavaScript API V3中文版参考手册 #### 概述 Google Maps JavaScript API V3 是一款强大的工具,允许开发者在网页上嵌入并自定义谷歌地图。此API提供了丰富的功能,包括创建交互式地图、添加标记、...

Global site tag (gtag.js) - Google Analytics