google map api 学习笔记
(1)地图的缩放监听函数
google.maps.event.addlistener(map,"zoom_change",function(){
缩放级别变化后的函数。
});
(2)初始化一个地图
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 8, //定义缩放层次
center: {lat: -34.397, lng: 150.644} //定义中心
});
}
也有
var map = new GMap2(document.getElementById("mapContainer"));
map.setCenter(new GLatLng(33.0,106.0),3);
(3)给marker标记加上自定义内容,首先定义一个“文本框”,然后在设置文本框的属性
var coordInfoWindow = new google.maps.InfoWindow();
(4)坐标的关系

(5)Localizing the Map服务本地化(将与服务器交换的js文件本地化)
把google map 加载时候,所需要的js下载到本地,以后再应用程序开发的时候,不引用google站点上的js,而是换成本地的js文件。可以通过firebug或google chrome等工具查看到的http请求,分析并下载有效的js文件,可能还需要分析各个js之间在使用过程中加载外链js的地址,并予以修改,替换对本地js的调用。
(6)navigator.geolocation地理定位
可以通过navigator.geolocation来获取设备的当前位置,返回一个位置对象,用户可以从这个对象中得到一些经纬度的相关信息。
navigator.geolocation的三个方法:1. getCurrentPosition()2. watchPosition()3. clearWatch()
1.getCurrentPosition()使用方法:navigator.geolocation.getCurrentPosition(successCallback, [errorCallback] , [positionOptions]);
A) successCallback 获取定位成功时执行的回调函数 eg: function(position){alert("纬度:"+position.coords.latitude+";经度:"+position.coords.longitude)};
successCallback返回一个地理数据对象position作为参数,该对象有属性timestamp和coords。timestamp表示该地理数据创建时间(时间戳);coords包括另外七个属性:
1. coords.latitude:估计纬度
2. coords.longitude:估计经度
3. coords.altitude:估计高度
4. coords.accuracy:所提供的以米为单位的经度和纬度估计的精确度
5. coords.altitudeAccuracy:所提供的以米为单位的高度估计的精确度
6. coords.heading: 宿主设备当前移动的角度方向,相对于正北方向顺时针计算
7. coords.speed:以米每秒为单位的设备的当前对地速度
B) errorCallback 定位失败时执行的回调函数 eg: function(error){alert(error.message);}errorCallback返回一个错误数据对象error作为参数,该对象有属性:
1.code :表示失败原因,返回1 or 2 or 3 ,具体为PERMISSION_DENIED (数值为1) 表示没有权限使用地理定位API
POSITION_UNAVAILABLE (数值为2) 表示无法确定设备的位置,例如一个或多个的用于定位采集程序报告了一个内部错误导致了全部过程的失败
TIMEOUT (数值为3) 表示超时
2.message :错误提示内容
C) positionOptions 用来设置positionOptions来更精细的执行定位,positionOptions拥有三个属性
{enableHighAccuracy:boolean , timeout:long , maximumAge:long}。
enableHighAccuracy 【true or false(默认)】是否返回更详细更准确的结构,默认为false不启用,选择true则启用,但是会导致较长的响应时间及增加功耗。
timeout 设备位置获取操作的超时时间设定(不包括获取用户权限时间),单位为毫秒,如果在设定的timeout时间内未能获取位置定位,则会执行errorCallback()返回code(3)。如果未设定timeout,那么timeout默认为无穷大,如果timeout为负数,则默认timeout为0。
maximumAge 设定位置缓存时间,以毫秒为单位,如果不设置该值,该值默认为0,如果设定负数,则默认为0。该值为0时,位置定位时会重新获取一个新的位置对象;该值大于0时,即从上一次获取位置时开始,缓存位置对象,如果再次获取位置时间不超过maximumAge,则返回缓存中的位置,如果超出maximumAge,则重新获取一个新的位置。
watchPosition()
功能getCurrentPosition()相似,watchPosition()是定期轮询设备的位置,同样拥有3个参数,与getCurrentPosition()相同。
使用方法:navigator.geolocation.watchPosition(successCallback, [errorCallback] , [positionOptions]);
执行步骤:
1.首先初始化positionOptions内的属性(详细同上)。
2.判断是否有缓存位置对象,该对象年龄是否可用、是否超出maximumAge ,如果可用且未超出,返回缓存位置,否则重新确定设备位置。
3.位置定位操作:
i.建立一个计时器,进行位置获取操作,如果在timeout之前完成,执行下一步;如果未在timeout之前完成,则执行errorCallback(),code为3,跳出步骤做等待重新激活。
ii.如果在timeout之前获得位置成功,则执行successCallback(),然后重置计时器(从获取位置成功时刻重新算起),继续挂起获取新位置。当有与之前位置有明显不同位置出现时,再次执行successCallback(),并重复操作,该循环直到timeout超时或者获取操作中遇到POSITION_UNAVAILABLE错误执行errorCallback()为止,亦或者执行clearWatch()操作。
clearWatch()
配合watchPosition()使用,用于停止watchPosition()轮询。
watchPosition()需要定义一个watchID,var watchID = watchPosition(...),通过clearWatch(watchID)来停止watchPosition(),使用方法类似setInterval。
(7)Google Maps API:
自定义Marker图标,为图标添加文字等信息
(8)异步:
同步:
google map api 学习笔记的更多相关文章
- Google Map API学习1
这一段时间公司一个新产品上线, 做超市代购的 这样,就需要计算每个门店也就是超市,距离小区之间的距离. 我们用的是Google Map 1.批量对地址进行编码,也就是将地址批量转化成对应的Goole ...
- Google Map API 学习五
今天其实收货很大的 1.InfoWindow google.maps.InfoWindow class An overlay that looks like a bubble and is often ...
- Google Map API 学习六
今天其实收货很大的 1.new google.maps.Circle 就是如何在地图上标注一个圆 3.getAnimation 在这里是通过获取Marker是否存在动作,然后如果存在动作的话,就将动作 ...
- Google Map API 学习六-设置infoWindow的长宽
- Google Map API 学习四
- Google Map API 学习三
- Google Map API 学习2-界面展示
- ASP.NET MVC Web API 学习笔记---第一个Web API程序
http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html GetListAll /api/Contact GetListBySex ...
- Google Map API 应用实例说明
目录 Google Map API 1基础知识 1.1 Google 地图 API 概念 1.2 Google 地图的"Hello, World" 1.2.1 加载 Google ...
随机推荐
- [课程相关]homework-02
一.如何组织代码 因为这个代码比较简单,用函数就足够了,个人觉得没必要用类,杀鸡不必用牛刀. 代码有点长,主要是加了很多判断参数的部分. 提取了一个公共的递归函数. 用了不少全局变量,可能当做参数传入 ...
- 一些网摘的hpc材料
source from: https://computing.llnl.gov Factors determines a large-scale program's performance 4 ...
- 关于修改Eclipse工作空间对应的文件夹名称之后的处理.
把文件夹名字从"xhkong"变成"xhkong(maintenance5.6)"之后打开这个工作空间. 导入git仓库我发现了一个之前没有发现的小技巧. 导入 ...
- hdu 1892 树状数组
思路:就是一个很普通的二维树状数组,注意的是x1,y1不一定在x2,y2的左下方. #include<iostream> #include<cstring> #include& ...
- hdu 4280 网络流
裸的网络流,递归的dinic会爆栈,在第一行加一句就行了 #pragma comment(linker, "/STACK:1024000000,1024000000") #incl ...
- Mirco2440核心板设计思考
1.核心板架构 注意的是:此处的RAM和ROM都是外置的 硬件框架 S3C2440+ SDRAM + NAND Flash + NOR Flash 也就是 CPU + RAM + ROM 2.S3C2 ...
- XP下Winform背景透明问题
win 7上usercontrol控件背景色设置为透明,显示无异常.到XP上一看,变成Control颜色了,即常见的灰色.网上搜了一堆,没发现有用的.偶然看到XP上Label的背景色可以透明,于是用L ...
- OpenShare vs Sharepoint
光合信息Openshare是基于SharePoint,Exchange等开发的企业协同门户产品,许多朋友问为什么不直接就用Sharepoint建立企业门户解决方案,而要建议用OpenShare来进行? ...
- ActionBar 的简单使用
About ActionBar The action bar is one of the most important design elements you can implement for yo ...
- (转载)Nim游戏博弈(收集完全版)
Nim游戏的概述: 还记得这个游戏吗?给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取.最后拿光珍珠的人输.后来,在一份资料上看到,这种游戏称为“拈(Nim)”.据说,它源 ...