google map开发学习笔记(四)

本文介绍如何使用Google Maps API实现地图交互,包括添加点击事件和鼠标悬停事件,以及如何利用事件监听器响应用户的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面我们仅仅做到了一个静态的地图,今天我们来看看如何给这个地图上面添加一些事件方法,使之能通过鼠标键盘等动作和用户交互起来。

 

我们通过使用 GEvent 命名空间中的实用工具函数注册事件监听器,来处理 Google 地图 API 中的事件。每个地图 API 对象都导出大量已命名的事件。例如,GMap2 对象导出 clickdblclickmove 事件,以及其他许多事件。每个事件都在指定的环境下发生,并且可以传递标识环境的参数。例如,当用户在地图对象中移动鼠标时,会触发 mousemove 事件,并且该事件会传递鼠标所在地理位置的 GLatLng

 

注册用来获取这些事件的相关通知的监听器,请使用静态方法 GEvent.addListener() 。该方法有三个参数,一个对象,一个待监听事件以及一个在指定事件发生时调用的函数。例如,每当用户点击地图时,下面的代码段都会显示警告:

 

[javascript] view plain copy print ?
  1. var map = new GMap2(document.getElementById("map"));  
  2. map.setCenter(new GLatLng(39.9493, 116.3975), 13);  
  3. GEvent.addListener(map, "click"function() {  
  4.   alert("您点击了地图。");  
  5. });  

 

上面是一个简单的例子,给地图对象添加一个点击事件侦听。

 

现在我们来再前几节的代码基础上,创建一个带有mouseover事件的标记。

 

看代码:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">   
  2. <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">  
  3.   <head>   
  4.     <meta http-equiv="content-type" content="text/html; charset=utf-8"/>   
  5.     <title>Google Maps JavaScript API Example</title>  
  6.     <mce:script src="http://ditu.google.cn/maps?file=api&v=2&key=ABQIAAAAChdCrN7wC9izi2oT-RnZVBQJamtJgghXUNimK5S1pZ0gfcTvLxTipoO9NuARtlJJIzXyxbfbVzVaAA&sensor=false" mce_src="http://ditu.google.cn/maps?file=api&v=2&key=ABQIAAAAChdCrN7wC9izi2oT-RnZVBQJamtJgghXUNimK5S1pZ0gfcTvLxTipoO9NuARtlJJIzXyxbfbVzVaAA&sensor=false"   
  7.             type="text/javascript"></mce:script>  
  8.     <!--这里就是Google map API开发的JavaScript代码 -->   
  9.     <mce:script type="text/javascript"><!--  
  10.    
  11.     var geocoder = null;  
  12.     var map = null;  
  13.     function initialize() {  
  14.       if (GBrowserIsCompatible()) {        
  15.         map = new GMap2(document.getElementById("map_canvas"));  
  16.         geocoder = new GClientGeocoder(); //地址解析对象  
  17.         map.addControl(new GLargeMapControl());  
  18.         map.addControl(new GMapTypeControl());  
  19.         map.setMapType(G_NORMAL_MAP);  
  20.         map.setCenter(new GLatLng(39.9493, 116.3975), 13);   
  21.       }   
  22.     }  
  23.     function showAddress(address) {  
  24.         if(geocoder){  
  25.             geocoder.getLatLng(   
  26.             address,   
  27.             function(point) {   
  28.               if (!point) {   
  29.                 alert("无法解析:" + address);   
  30.               } else {   
  31.                 map.setCenter(point, 13);  
  32.                 //创建一个标记叠加层  
  33.                 map.addOverlay(createMaker(point));   
  34.                 //打开一个信息窗口  
  35. //              marker.openInfoWindowHtml(address);   
  36.               }   
  37.             }   
  38.           );   
  39.         }  
  40.     }  
  41.     //创建一个标记,并为该标记注册一个侦听器  
  42.     function createMaker(point){  
  43.             var marker = new GMarker(point);  
  44.             GEvent.addListener(marker,'mouseover',function(){  
  45.                 var myHtml = 'GPoint为:' + point.toString() +', 缩放级别:' + map.getZoom();  
  46.                 map.openInfoWindow(point,myHtml);  
  47.             });  
  48.         return marker;  
  49.     }  
  50.       
  51. // --></mce:script>   
  52.   </head>  
  53.   <body onload="initialize()" onunload="GUnload()">  
  54.     <input type="text" id="address" name="address" /> <button onclick="showAddress(document.getElementById('address').value);">提交</button>    
  55.     <div id="map_canvas" style="width:800px;height:600px;"></div>   
  56.   </body>   
  57. </html>  

 

了解更多关于事件对象的请看这里:http://code.google.com/intl/zh-CN/apis/maps/documentation/reference.html#GEvent

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值