系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 网络编程 > CSS/HTML > 详细页面

高德地图WEB版基础控件展示 <font color=red>原创</font>

时间:2020-02-04来源:电脑系统城作者:电脑系统城

之前想自己做一个旅游导航的项目,在网上一搜发现了高德地图开放平台,发现原来高德可以很简单的就应用到自己的项目里面,当即我就申请了一个key来学一学,仔细研究了一下,感觉还挺难的,网上找了找案例什么的,经过这几天,小编把高德的一些基础控件差不多弄了一下,效果图如下图所示:

废话不多说,直接上源码,下面是js代码:


 
  1. <script language="javascript" src="http://webapi.amap.com/maps?v=1.2&key=3c5ca12a5778fde874e9959c7fbdf516">//引入高德地图API</script>
  2. <script language="javascript">
  3. var mapObj;
  4. var scale;
  5. var mapType;
  6. var toolBar;
  7. var overView;
  8. var circleEditor;
  9. var circle;
  10. var polygonEditor;
  11. var polygon;
  12. var homeControl;
  13. var controlUI;
  14. var ruler;
  15. var mousetool;
  16. //刷新页面
  17. function reload(){
  18. location.reload();
  19. }
  20.  
  21. function mapInit(){
  22. mapObj = new AMap.Map("iCenter",{
  23. center:new AMap.LngLat(116.397728,39.90423), //地图中心点
  24. level:13, //地图显示的比例尺级别
  25. });
  26. mapObj.plugin(["AMap.ToolBar"],function(){ //在地图中添加ToolBar插件
  27. toolBar = new AMap.ToolBar();
  28. mapObj.addControl(toolBar);
  29. });
  30. mapObj.plugin(["AMap.Scale"],function(){ //加载比例尺插件
  31. scale = new AMap.Scale();
  32. mapObj.addControl(scale);
  33. scale.show();
  34. });
  35. mapObj.plugin(["AMap.OverView"],function(){ //在地图中添加鹰眼插件
  36. //加载鹰眼
  37. overView = new AMap.OverView({
  38. visible:true //初始化显示鹰眼
  39. });
  40. mapObj.addControl(overView);
  41. overView.open(); //展开鹰眼
  42. });
  43. mapObj.plugin(["AMap.RangingTool"],function(){
  44. ruler = new AMap.RangingTool(mapObj);
  45. AMap.event.addListener(ruler,"end",function(e){
  46. ruler.turnOff();
  47. });
  48. });
  49. mapObj.plugin(["AMap.MouseTool"],function(){ //鼠标工具插件
  50. mousetool = new AMap.MouseTool(mapObj);
  51. });
  52. }
  53. function Coordinate(){
  54. AMap.event.addListener(mapObj,'click',getLnglat); //点击事件
  55. }
  56.  
  57.  
  58. function toolBarShow(){
  59. toolBar.show();
  60. toolBar.showRuler();
  61. toolBar.showDirection();
  62. }
  63. function toolBarDirection(){
  64. toolBar.show();
  65. toolBar.showDirection();
  66. toolBar.hideRuler();
  67. }
  68. function toolBarLong(){
  69. toolBar.show();
  70. toolBar.hideDirection();
  71. toolBar.showRuler();
  72. }
  73. function toolBarShot(){
  74. toolBar.show();
  75. toolBar.hideRuler();
  76. toolBar.hideDirection();
  77. }
  78. function iMapType(){
  79. mapObj.plugin(["AMap.MapType"],function(){ //添加地图类型切换插件
  80. //地图类型切换
  81. mapType= new AMap.MapType({defaultType:1,showRoad:true});
  82. mapObj.addControl(mapType);
  83. });
  84. }
  85. function removeMapType(){
  86. mapObj.removeControl(mapType);
  87. }
  88. function iCircleEditor(){ //圆形编辑器
  89. circle = new AMap.Circle({ //圆形编辑器的样式
  90. map: mapObj,
  91. center:new AMap.LngLat("116.40332221984863","39.90025505675715"),
  92. radius:1000,
  93. strokeColor: "#F33",
  94. strokeOpacity: 1,
  95. strokeWeight: 3,
  96. fillColor: "ee2200",
  97. fillOpacity: 0.35
  98. });
  99. mapObj.plugin(["AMap.CircleEditor"],function(){
  100. circleEditor = new AMap.CircleEditor(mapObj,circle); //创建圆形编辑器对象
  101. circleEditor.open(); //打开圆形编辑器
  102. });
  103. }
  104. function removeCicleEditor(){ //关闭圆形编辑器,隐藏圆形
  105. circleEditor.close();
  106. circle.hide();
  107. }
  108.  
  109. function iPloygonEditor(){ //编辑多边形
  110. var arr=new Array();//经纬度坐标数组
  111. arr.push(new AMap.LngLat("116.403322","39.920255"));
  112. arr.push(new AMap.LngLat("116.410703","39.897555"));
  113. arr.push(new AMap.LngLat("116.402292","39.892353"));
  114. arr.push(new AMap.LngLat("116.389846","39.891365"));
  115. polygon = new AMap.Polygon({
  116. path:arr, //设置多边形轮廓的节点数组
  117. strokeColor:"#0000ff",
  118. strokeOpacity:0.2,
  119. strokeWeight:3,
  120. fillColor: "#f5deb3",
  121. fillOpacity: 0.35
  122. });
  123. //地图上添加多边形
  124. mapObj.addOverlays(polygon);
  125. //构造多边形编辑对象,并开启多边形的编辑状态
  126. mapObj.plugin(["AMap.PolyEditor"],function(){
  127. polygonEditor = new AMap.PolyEditor(mapObj,polygon);
  128. polygonEditor.open();
  129. });
  130. }
  131. function removePloygonEditor(){
  132. polygonEditor.close();
  133. polygon.hide();
  134. }
  135. AMap.homeControlDiv = function(){}
  136. AMap.homeControlDiv.prototype = {
  137. addTo: function(map, dom){
  138. dom.appendChild(this._getHtmlDom(map));
  139. },
  140. _getHtmlDom:function(map){
  141. this.map=map;
  142. // 创建一个能承载控件的<div>容器
  143. controlUI = document.createElement("DIV");
  144. controlUI.style.width='80px'; //设置控件容器的宽度
  145. controlUI.style.height='20px'; //设置控件容器的高度
  146. controlUI.style.backgroundColor='white';
  147. controlUI.style.borderStyle='solid';
  148. controlUI.style.borderWidth='2px';
  149. controlUI.style.cursor='pointer';
  150. controlUI.style.textAlign='center';
  151.  
  152. // 设置控件的位置
  153. controlUI.style.position='absolute';
  154. controlUI.style.left='120px'; //设置控件离地图的左边界的偏移量
  155. controlUI.style.top='5px'; //设置控件离地图上边界的偏移量
  156. controlUI.style.zIndex='300'; //设置控件在地图上显示
  157.  
  158. // 设置控件字体样式
  159. controlUI.style.fontFamily='Arial,sens-serif';
  160. controlUI.style.fontSize='12px';
  161. controlUI.style.paddingLeft='4px';
  162. controlUI.style.paddingRight='4px';
  163. controlUI.innerHTML="换中心点";
  164.  
  165. // 设置控件响应点击onclick事件
  166. controlUI.onclick = function(){
  167. map.setCenter(new AMap.LngLat(116.234404, 39.12915));
  168. }
  169. return controlUI;
  170. }
  171. }
  172. AMap.event.trigger(homeControlDiv,"hide");
  173. AMap.event.addListener(homeControlDiv,"hide",function(){
  174. controlUI.style.display = 'none';
  175. })
  176.  
  177. function myControl(){
  178. homeControl = new AMap.homeControlDiv(mapObj); //新建自定义插件对象
  179. mapObj.addControl(homeControl); //地图上添加插件
  180. }
  181. function removeMyControl(){
  182. homeControl.hide();
  183. //controlUI.style.display='none';
  184. }
  185. function iRangingTool(){
  186. ruler.turnOn();
  187. }
  188. function removeRangingTool(){
  189. ruler.turnOff();
  190. mapObj.clearMap();
  191. //ruler.hide();
  192. //ruler.setMap(null);
  193. //mapObj.removeControl(ruler);
  194. }
  195. function iMarker(){
  196. mousetool.marker(); //使用鼠标工具,在地图上画标记点
  197. }
  198. function iMeasureArea(){
  199. mousetool.measureArea();
  200. }
  201. function iRectZoomIn(){
  202. mousetool.rectZoomIn();
  203. }
  204. function iRectZoomOut(){
  205. mousetool.rectZoomOut();
  206. }
  207. function iPolyline(){
  208. mousetool.polyline();
  209. }
  210. function iPolygon(){
  211. mousetool.polygon();
  212. }
  213. function iCircle(){
  214. mousetool.circle();
  215. }
  216. function iRectangle(){
  217. mousetool.rectangle();
  218. }
  219. function iRule(){
  220. mousetool.rule();
  221. }
  222. function removeMouseTool(){
  223. mousetool.close(true);
  224. }
  225.  
  226. function geocoder() {
  227. var MGeocoder;
  228. //加载地理编码插件
  229. mapObj.plugin(["AMap.Geocoder"], function() {
  230. MGeocoder = new AMap.Geocoder({
  231. radius: 1000,
  232. extensions: "all"
  233. });
  234. //返回地理编码结果
  235. AMap.event.addListener(MGeocoder, "complete", geocoder_CallBack);
  236. //逆地理编码
  237. MGeocoder.getAddress(lnglatXY);
  238. });
  239. //加点
  240. var marker = new AMap.Marker({
  241. map:mapObj,
  242. icon: new AMap.Icon({
  243. image: "http://api.amap.com/Public/images/js/mark.png",
  244. size:new AMap.Size(58,30),
  245. imageOffset: new AMap.Pixel(-32, -0)
  246. }),
  247. position: lnglatXY,
  248. offset: new AMap.Pixel(-5,-30)
  249. });
  250. // mapObj.setFitView();
  251. }
  252. //回调函数
  253. function geocoder_CallBack(data) {
  254. var address;
  255. //返回地址描述
  256. address = data.regeocode.formattedAddress;
  257. //返回结果拼接输出
  258. document.getElementById("iAddress").innerHTML = address;
  259. }
  260. //鼠标点击,获取经纬度坐标
  261. function getLnglat(e){
  262. mapObj.clearMap();
  263. var x = e.lnglat.getLng();
  264. var y = e.lnglat.getLat();
  265. document.getElementById("lnglat").innerHTML = x + "," + y;
  266.  
  267. lnglatXY = new AMap.LngLat(x,y);
  268. geocoder();
  269. }
  270. </script>

下面是HTML代码:


 
  1. <body onLoad="mapInit()">
  2. <div id="iCenter"></div>
  3. <div id="iControlbox">
  4. <ul>
  5. <li><button onclick="javascript:toolBarShow();">显示完整鱼骨</button><buttononclick="javascript:toolBar.hide();">隐藏鱼骨</button><buttononclick="javascript:toolBarDirection();">方向盘</button><buttononclick="javascript:toolBarLong();">长标尺</button><buttononclick="javascript:toolBarShot();">短标尺</button></li>
  6. <li><button onclick="javascript:scale.show();">显示比例尺</button><buttononclick="javascript:scale.hide();">隐藏比例尺</button></li>
  7. <li><button onclick="javascript:overView.show();">显示鹰眼</button><buttononclick="javascript:overView.hide();">隐藏鹰眼</button></li>
  8. <li><button onclick="javascript:iMapType();">添加地图类型切换</button><buttononclick="javascript:removeMapType();">移除地图类型切换</button></li>
  9. <li><button onclick="javascript:iCircleEditor();">添加圆形编辑器</button><buttononclick="javascript:removeCicleEditor();">删除圆形编辑器</button></li>
  10. <li><button onclick="javascript:iPloygonEditor();">添加多边形编辑器</button><buttononclick="javascript:removePloygonEditor();">删除多边形编辑器</button></li>
  11. <li><button onclick="javascript:iMarker();">鼠标打点工具</button><buttononclick="javascript:removeMouseTool();">清除</button></li>
  12. <li><button onclick="javascript:iPolyline();">鼠标画折线工具</button><buttononclick="javascript:removeMouseTool();">清除</button></li>
  13. <li><button onclick="javascript:iPolygon();">鼠标画多边形工具</button><buttononclick="javascript:removeMouseTool();">清除</button></li>
  14. <li><button onclick="javascript:iCircle();">鼠标画圆形工具</button><buttononclick="javascript:removeMouseTool();">清除</button></li>
  15. <li><button onclick="javascript:iRectangle();">鼠标画矩形工具</button><buttononclick="javascript:removeMouseTool();">清除</button></li>
  16. <li><button onclick="javascript:iRule();">鼠标测距工具</button><buttononclick="javascript:removeMouseTool();">清除</button></li>
  17. <li><button onclick="javascript:iMeasureArea();">鼠标测面积</button><buttononclick="javascript:removeMouseTool();">移除</button></li>
  18. <li><button onclick="javascript:iRectZoomIn();">鼠标框选缩小</button><buttononclick="javascript:iRectZoomOut();">鼠标框选放大</button><buttononclick="javascript:removeRangingTool();">关闭鼠标放大缩小</button></li>
  19. <li><button onclick="javascript:iRangingTool();">测距插件</button><buttononclick="javascript:removeRangingTool();">隐藏测距</button></li>
  20. <li><button onclick="javascript:myControl();">添加自定义控件</button><buttononclick="javascript:removeMyControl();">移除自定义控件</button></li>
  21. <li><div class="detail"><p><span id="lnglat"> </span></p><p><spanid="iAddress"> </span></p></div></li>
  22. <li><button onclick="javascript:Coordinate();">坐标拾取控件</button><buttononclick="javascript:reload();">取消坐标拾取</button></li>
  23.  
  24.  
  25. </ul>
  26. </div>
  27. </body>

在js第一行引入高德地图API中,key值是我自己在高德地图里面创建的也可以用,你们也可以上高德开放平台自行申请key值试一试。

高德开放平台:developer.amap.com/

这里是本效果图源码下载地址,感兴趣的朋友可以直接下载

点击此处下载

分享到:

相关信息

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载