Google地图之OverlayView使用(自定义叠加层)

Google Maps API 第 3 版提供了用于创建自定义叠加层的 OverlayView 类。OverlayView 是一个基类,提供了您在创建叠加层时必须实现的若干方法。该类还提供了一些方法,用于实现屏幕坐标和地图位置之间的转换。

要创建自定义叠加层,请执行以下操作:

  • 将自定义对象的 prototype 设置为 google.maps.OverlayView() 的新实例。这可以有效地实现叠加层类的“子类化”。
  • 为自定义叠加层创建构造函数,并将该构造函数中的所有初始化参数都设置为自定义属性。
  • 在原型中实现 onAdd() 方法,以将叠加层附加到地图上。当地图准备好附加叠加层后,系统将会调用 OverlayView.onAdd()
  • 在原型中实现 draw() 方法,以处理对象的视觉显示。同样,在对象首次显示后,系统将会调用 OverlayView.draw()
  • 您还应当实现 onRemove() 方法,以清理在叠加层中添加的所有元素。

Html代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>OverlayView</title>
<link type="text/css" rel="Stylesheet" href="/style/mapMaker.css" />
<script type="text/javascript" src="</script‘>http://maps.google.com/maps/api/js?sensor=false&language=zh-CN"></script>
<script type="text/javascript" src="/javascript/OverlayView.js"></script>
</head>
<body >
<div id="show" ></div>
</body>
</html>

OverlayView.js

var overlay;
var geocoder;
function initialize(){
 address = $G("address");
 name = $G("name");
 geocoder=new google.maps.Geocoder();//实例化地址解析
 var myLatLng = new google.maps.LatLng(30.658602, 104.064587);//初始化坐标中心点,这里以成都为列
 var myOptions = {
      zoom: 15,
      center: myLatLng,
      mapTypeId: google.maps.MapTypeId.ROADMAP//指定地图类型
 };
 var map = new google.maps.Map(document.getElementById("show"), myOptions);
 geocoder.geocode({
  ‘address‘:address
 },function (results,status) {
  if(status==google.maps.GeocoderStatus.OK) {
   map.setCenter(results[0].geometry.location);//将地图中心定位到查询结果
   overlay = new LableMarker(map,name,results[0].geometry.location);//实例化OverlayView类
  }
 }); 
}
 
function LableMarker(map, text, latLng){
 this.map_ = map;
 this.text_ = ‘<div class="iconTheStyle"><div class="s1"></div><div class="s2">‘+text+‘</div><div class="s3"></div><div class="s4"></div><div class="s5"></div></div>‘;
 this.latLng_ = latLng;
 this.div_ = null;
 this.setMap(map);
}  
// 继承自  google.maps.OverlayView
LableMarker.prototype = new google.maps.OverlayView();
// 当准备将 悬浮层 添加到地图上时 调用

LableMarker.prototype.onAdd = function(){
 var div = document.createElement(‘DIV‘);
 div.style.border = ‘none‘;
 div.style.position=‘absolute‘;   
 div.innerHTML = this.text_;   
 this.div_ = div;   
 var panes = this.getPanes();
 panes.overlayLayer.appendChild(div);
};
  
// 当第一次在地图上显示时 调用
LableMarker.prototype.draw = function(){
 var overlayProjection = this.getProjection();
 var latLng = overlayProjection.fromLatLngToDivPixel(this.latLng_);
 // 设置层的大小 和 位置
 var div = this.div_;
 var size = new google.maps.Size(-26, -42); // 修正坐标的值;
 div.style.left = (latLng.x + size.width) + ‘px‘;
 div.style.top = (latLng.y + size.height) + ‘px‘;
};
// 当设置 悬浮层的 setMap(null) 会自动调用 
LableMarker.prototype.onRemove = function(){
 this.div_.parentNode.removeChild(this.div_);
 this.div_ = null;
};

更多0

Google地图之OverlayView使用(自定义叠加层)

时间: 2024-10-04 13:44:32

Google地图之OverlayView使用(自定义叠加层)的相关文章

Google 地图 API V3 之 叠加层

叠加层概述 叠加层是地图上与纬度/经度坐标绑定的对象,会随您拖动或缩放地图而移动.叠加层表示的是“添加”到地图中以标明点.线.区域或对象集合的对象. Maps API 包含以下几种叠加层: 地图上的单个位置是使用标记显示的.标记有时可显示自定义的图标图片,这种情况下标记通常被称为“图标”.标记和图标是 Marker 类型的对象.(有关详情,请参阅下面的标记和图标.) 地图上的线是使用折线(表示一系列按顺序排列的位置)显示的.线是 Polyline 类型的对象.(有关详情,请参阅折线.) 地图上的

地图组件上的自定义区域叠加层显示 ArcGis + GeoJson

最近参与了一个IOT环境项目,需要对某个城市的某几个区域做环境监控与治理,其中就用到了地图叠加层的功能,粗看很复杂,其实很简单,先来看一下效果,然后再来讲一下如何实现的: 中间的黄色轮廓线包括的几块区域就是通过gis坐标和百度的叠加层来实现的,来简单说一下实现的步骤吧: 首先需要有每块区域的坐标集合,这个主要是由工程队施工人员,在当地采集坐标,采集后会生成相应的文件给到开发人员 这些文件主要为如下: 其中这个红框内的文件是我们最需要的文件,他是一个shp文件,轮廓文件,开发人员需要转换为一个js

ios 一步一步学会自定义地图吹出框(CalloutView)--&gt;(百度地图,高德地图,google地图)

前言 在 ios上边使用地图库的同学肯定遇到过这样的问题:吹出框只能设置title和subtitle和左右的view,不管是百度地图还是高德地图还是自带的 google地图,只提供了这四个属性,如果想添加更多的view,只能自定义.可是,类库只能看到.h文件,.m都看不到,这让新手比较蛋疼,庞大的地 图类库一时半会摸不着头脑,从头再学还需要时间,本文就教大家快速制作一个属于自己的 CalloutView!等你一步一步调通后,再回过头来使用系统自带的方法设置callout,就会领悟这个过程. 正文

Google地图接口API之Google地图 API 参考手册(七)

Google 地图API 参考手册 地图 构造函数/对象 描述 Map() 在指定的 HTML 容器中创建新的地图,该容器通常是一个DIV元素. 叠加层 构造函数/对象 描述 Marker 创建一个标记. MarkerOptions 标记的选项.由DirectionsRenderer渲染的所有标记都将使用这些选项. MarkerImage A structure representing a Marker icon or shadow image MarkerShape Defines the

Google地图开发总结

我们经常使用地图查位置.看公交.看街景,同时地图还开放第三方的API给开发者.利用这些API进行地图的个性化的展示和控制,例如北京被水淹了,开发一个网页显示北京被淹的地图,地图上面标志被水淹的位置.严重程度,或者我是交警,想要在地图上标志发生车祸.被交通管制的路段,甚至是利用地图的街景,控制街景的位置变化做一个tour show动画.因为地图本身就是一个比较好玩的东西,再加上一些个性化的控制会更加的有趣. 常有的地图有谷歌.百度.必应等,这些都有提供api,下面以谷歌地图为例做说明.虽然谷歌被墙

Google地图

Google地图开发总结 我们经常使用地图查位置.看公交.看街景,同时地图还开放第三方的API给开发者.利用这些API进行地图的个性化的展示和控制,例如北京被水淹了,开发一个网页显示北京被淹的地图,地图上面标志被水淹的位置.严重程度,或者我是交警,想要在地图上标志发生车祸.被交通管制的路段,甚至是利用地图的街景,控制街景的位置变化做一个tour show动画.因为地图本身就是一个比较好玩的东西,再加上一些个性化的控制会更加的有趣. 常有的地图有谷歌.百度.必应等,这些都有提供api,下面以谷歌地

Google 地图 API V3 之控件

控件概述 通过 Google Maps API 显示的地图包含用户界面元素,以便用户与地图进行交互.这些元素称为“控件”.您可以在 Google Maps API 应用中添加这些控件的多种组合.或者,您也可以不进行任何操作,让 Google Maps API 处理所有控件行为. Maps API 带有一部分可在地图中使用的内置控件: 缩放控件,显示滑块(针对大地图)或“+/-”小按钮(针对小地图),用于控制地图的缩放等级.在非触摸的设备上,该控件默认显示在地图的左上角,而在触摸设备上则显示在左下

Google地图开发初级篇

上回我们学习了如何搭建一个google map应用,了解了基础知识,下面我们来深入学习google map中待发掘的宝藏 在这篇文章,我将告诉你 1.   如何创建google地图 2.   Google地图 的模式,和地图类型 3.   Google地图上的控件使用 4.   Google地图的点击事件和其他事件 5.   摄像头移动知识 一. 地图对象 1.  获得地图对象 A.   地图控件所在的fragment 在上一篇中,我们自动生成项目后,可以看到MapActivity和它的布局文件

[转]使用Google地图API搜索功能

使用Google地图API搜索功能 由于工作关系,最近这两天研究了下Google地图API,要实现地图位置搜索功能,显示搜索结果并能在地图上标记下来,刚开始还考虑使用51ditu,出于搜索关键字分词等方面考虑,最后还是决定使用Google地图,一直也都是那么的崇拜谷歌的大神,这次就来体验一翻~ 在Google地图标记定位到一点 刚开始是实现在Google地图上定位一点的功能,API接口里GMap2类有一个setCenter(center:GLatLng, zoom?:Number, type?: