使用 html5 显示导航路线 谷歌地图api
最近在项目遇到一个关于谷歌地图的问题,看了下谷歌地图api后实现了导航和定位的功能,特意记录下,以便以后查看.
整个流程从服务端获得目的地(简称 B)的经纬度地址,通过客户端获得用户(简称A)的经纬度地址,
如果成功获得B的经纬度就在地图上显示出A到B的驾车路径,
如果没有获得A的经纬度则在地图上显示B的位置并明确标识.
拆分下整个需求,需要这些功能
1.渲染地图;
2.在地图上标识某地;
3.获得用户的经纬度;
4.在地图上显示导航路线.
--------------
1.显示地图;
看google的api
引入入地图api
<script src="http://maps.google.com/maps/api/js?sensor=false&libraries=places"></script>
看看谷歌官方的例子,渲染地图很简单的……
这是自己的代码
<!DOCTYPE HTML>
<html lang="zh-ch">
<head>
<title>谷歌地图</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no,maximum-scale=1" />
<meta name="apple-mobile-web-app-capable" content="yes">
<script src="http://maps.google.com/maps/api/js?sensor=false&libraries=places"></script>
<script src="map.js" type="text/javascript"></script>
<style>
#map_canvas{
position: absolute;
left: 0;
top:0;
height:50%;
width:50%;
background: #fff8dc;
}
</style>
</head>
<body>
<div id="map_canvas">
</div>
</body>
</html>
js 代码initMap 渲染地图
var newMap = {a:{},b:{name:"目的地"}}; //全局变量 newMap.directionsDisplay = {}; newMap.directionsService = new google.maps.DirectionsService(); //这两个是在导航的时候用到的 //初始化地图 function initMap(mapCenter) {newMap.directionsDisplay = new google.maps.DirectionsRenderer();var myOptions = {zoom:10,mapTypeId: google.maps.MapTypeId.ROADMAP, //地图类型center: mapCenter //LatLng 对象 }newMap.map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
newMap.directionsDisplay.setMap(newMap.map); }
js 方法 calcRoute() 导航
//导航方法 function calcRoute(start,end) {var request = {origin:start, //开始的位置 (A)destination:end, //开始的位置 (B)travelMode: google.maps.TravelMode.DRIVING //导航类型 驾驶 };newMap.directionsService.route(request, function(result, status) {if (status == google.maps.DirectionsStatus.OK) {directionsDisplay.setDirections(result);}}); }
2.获得用户的当前的地理位置信息
使用html5的方法来 geolocation.getCurrentPosition() 获得地址,这方法在移动设备上好用,pc上不好用. 这个和有没有网络没有关系,没有网络也是可用的
function getLatLng(){if( navigator.geolocation ) {function gpsSuccess(pos){if( pos.coords ){newMap.a.lat = pos.coords.latitude;newMap.a.lng = pos.coords.longitude;}else{newMap.a.lat = pos.latitude;newMap.a.lng = pos.longitude;}var userPositon = new google.maps.LatLng(newMap.a.lat,newMap.a.lng);var crsPositon = new google.maps.LatLng(newMap.b.lat,newMap.b.lng);initMap(userPositon);calcRoute(userPositon,crsPositon);addMarker(crsPositon,newMap.map,newMap.b.name);addMarker(userPositon,newMap.map, "您当前位置");}function gpsFail(){alert('无法获取您的地理位置信息');var obj = new google.maps.LatLng(newMap.b.lat,newMap.b.lng);initMap(obj);addMarker(obj,newMap.map, newMap.b.name);}navigator.geolocation.getCurrentPosition(gpsSuccess, gpsFail, {enableHighAccuracy:true, maximumAge: 3000000,timeout:20*1000});} }
还有一问题在地图上标识某地
//向地图上添加某地标识 function addMarker(location,map,contentString) {var marker = new google.maps.Marker({position: location,'draggable': false,'animation': google.maps.Animation.DROP,map: map});var infowindow = new google.maps.InfoWindow({content: contentString});google.maps.event.addListener(marker, 'click', function(){infowindow.open(map,marker);}); }
把这些方法拼装起来ok
ok完整的例子
demo地址
转载于:https://www.cnblogs.com/acmilan/archive/2012/06/15/2469051.html
使用 html5 显示导航路线 谷歌地图api相关推荐
- html5谷歌地图,谷歌地图API和HTML 5
我是新来的Stackoverflow,所以要善良.谷歌地图API和HTML 5 我一直在使用谷歌地图api和一些其他的东西来制作游戏的项目.这个想法是使用地理定位数据来清除地图上的雾(当你开始时地图充 ...
- 谷歌地图 API 的 5 个强大替代品(国外产品)
谷歌地图因其全球地理定位服务而广受欢迎.他们庞大的地理特征.小型企业和全球街道图像数据库是无与伦比的--这就是为什么谷歌地图 API多年来一直是开发人员的首选. 然而,在 2018 年 7 月,谷歌大 ...
- 谷歌地图API教程及在VUE中的使用
目录 一.获取密钥API Key 1.创建项目 2.启用Maps JavaScript API服务 3.创建API Key 4.设置结算账户 二.头文件中引入api资源文件 1.获 ...
- 去除谷歌地图api上的各种默认标记
针对于谷歌地图api上显示的各种样式问题 详情参考: https://mapstyle.withgoogle.com/
- php获取谷歌地图gps定位,谷歌地图 API 开发之获取当前坐标(经纬度)
很多时候要定位到当前所在的位置,谷歌地图 API 没找到,然后网上搜的是通过原生js geolocation来实现的. 代码如下: var x=document.getElementById(&quo ...
- 谷歌地图API位置请求_Google Maps API
谷歌地图API位置请求 Google maps api 以xml格式传回请求的地址:http://maps.google.com/maps/api/geocode/xml?latlng=39.910 ...
- 谷歌地图api的使用 一
一.注册账号 使用谷歌地图api,需要注册一个谷歌账号,并创建一个你的项目,在项目中开通你所需要的api. 谷歌地图api网址:https://cloud.google.com/maps-platfo ...
- 谷歌地图api 微信小程序_使用Google的融合位置提供程序API进行实时位置跟踪
谷歌地图api 微信小程序 Location tracking and monitoring have seen a surge in modern application development w ...
- 谷歌地图显示服务器错误解决方法,谷歌地图API:内部服务器错误插入功能时
我尝试在自定义谷歌地图上插入功能:我使用示例代码从文档 但我得到一个ServiceException(内部服务器错误),当我拨打 服务插入方法.谷歌地图API:内部服务器错误插入功能时 这里是我做的: ...
最新文章
- [Android Traffic] 调整定时更新的频率(C2DM与退避算法)
- 图像转换 之 方形图转化扇形图
- 计算机专业python教材_计算机专业几本必看的书!
- 【DIY】送给儿子的礼物——DIY故事机(音乐播放器)
- php管理用户名和密码,管理员用户名/密码不适用于PHP
- python3.0与2.0,python3.0与python2.0有哪些不同
- 51nod 1534 棋子游戏
- Oracle CRS stack is already configured and will be running under init(1M)
- PyCharm配置django环境
- 数学常用公式及规律、结论(三)
- Spring IOC(依赖注入的三种方式)
- gtShell - 为你常用的目录建立标签并快速跳转
- vcpkg Ubuntu安装
- 小米营销总监:中国模式能复制,但要有本地化的独特性
- 金华职业技术学院计算机网络技术考试,金华职业技术学院2016年提前招生计算机应用技术专业测评方案...
- CSDN 去除图片水印
- 如何知晓代理IP所属城市?
- 移动机器人定位(amcl)
- 包载信使mRNA的多西环素纳米脂质体|雷公藤红素纳米脂质体RNA核糖核酸(实验原理)
- centos环境:Do not run Composer as root/super user的解决办法。