首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

HTML5获取地理位置及百度地图展示实例

  • 23-11-14 10:02
  • 2333
  • 6175
blog.csdn.net
         这两天在看在移动端通过浏览器获取地理位置的相关方法,顺便深入了解一下百度地图API的相关功能。
测试实例包含了以下功能:
(1)通过IP地址获取城市地址(并不完全准确,存在代理IP或IP中转时定位与实际位置不一致的情况)
(2)通过移动端浏览器及GPS定位位置坐标
(3)根据位置坐标转换百度地图坐标
(4)根据位置坐标逆推城市具体地址功能(存在一定误差)
(5)通过使用百度API展示地理位置及添加标注功能


  1. html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>地理位置测试title>
  6. <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3">script>
  7. <script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js">script>
  8. <script type="text/javascript">
  9. var map;
  10. var gpsPoint;
  11. var baiduPoint;
  12. var gpsAddress;
  13. var baiduAddress;
  14. function getLocation() {
  15. //根据IP获取城市
  16. var myCity = new BMap.LocalCity();
  17. myCity.get(getCityByIP);
  18. //获取GPS坐标
  19. if (navigator.geolocation) {
  20. navigator.geolocation.getCurrentPosition(showMap, handleError, { enableHighAccuracy: true, maximumAge: 1000 });
  21. } else {
  22. alert("您的浏览器不支持使用HTML 5来获取地理位置服务");
  23. }
  24. }
  25. function showMap(value) {
  26. var longitude = value.coords.longitude;
  27. var latitude = value.coords.latitude;
  28. map = new BMap.Map("map");
  29. //alert("坐标经度为:" + latitude + ", 纬度为:" + longitude );
  30. gpsPoint = new BMap.Point(longitude, latitude); // 创建点坐标
  31. map.centerAndZoom(gpsPoint, 15);
  32. //根据坐标逆解析地址
  33. var geoc = new BMap.Geocoder();
  34. geoc.getLocation(gpsPoint, getCityByCoordinate);
  35. BMap.Convertor.translate(gpsPoint, 0, translateCallback);
  36. }
  37. translateCallback = function (point) {
  38. baiduPoint = point;
  39. var geoc = new BMap.Geocoder();
  40. geoc.getLocation(baiduPoint, getCityByBaiduCoordinate);
  41. }
  42. function getCityByCoordinate(rs) {
  43. gpsAddress = rs.addressComponents;
  44. var address = "GPS标注:" + gpsAddress.province + "," + gpsAddress.city + "," + gpsAddress.district + "," + gpsAddress.street + "," + gpsAddress.streetNumber;
  45. var marker = new BMap.Marker(gpsPoint); // 创建标注
  46. map.addOverlay(marker); // 将标注添加到地图中
  47. var labelgps = new BMap.Label(address, { offset: new BMap.Size(20, -10) });
  48. marker.setLabel(labelgps); //添加GPS标注
  49. }
  50. function getCityByBaiduCoordinate(rs) {
  51. baiduAddress = rs.addressComponents;
  52. var address = "百度标注:" + baiduAddress.province + "," + baiduAddress.city + "," + baiduAddress.district + "," + baiduAddress.street + "," + baiduAddress.streetNumber;
  53. var marker = new BMap.Marker(baiduPoint); // 创建标注
  54. map.addOverlay(marker); // 将标注添加到地图中
  55. var labelbaidu = new BMap.Label(address, { offset: new BMap.Size(20, -10) });
  56. marker.setLabel(labelbaidu); //添加百度标注
  57. }
  58. //根据IP获取城市
  59. function getCityByIP(rs) {
  60. var cityName = rs.name;
  61. alert("根据IP定位您所在的城市为:" + cityName);
  62. }
  63. function handleError(value) {
  64. switch (value.code) {
  65. case 1:
  66. alert("位置服务被拒绝");
  67. break;
  68. case 2:
  69. alert("暂时获取不到位置信息");
  70. break;
  71. case 3:
  72. alert("获取信息超时");
  73. break;
  74. case 4:
  75. alert("未知错误");
  76. break;
  77. }
  78. }
  79. function init() {
  80. getLocation();
  81. }
  82. window.onload = init;
  83. script>
  84. head>
  85. <body>
  86. <div id="map" style="width:600px;height:600px;">div>
  87. body>
  88. html>
以手机UC浏览器测试正常。需要授权浏览器获取位置权限。更多实例可参考百度API:http://developer.baidu.com/map/jsdemo.htm

注:本文转载自blog.csdn.net的CYZERO的文章"http://blog.csdn.net/cyzero/article/details/42584193"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top