PHPIN.NET

 找回密码
 立即注册
查看: 7022|回复: 3

[技巧手记] 百度地图2.0标注,兼容帝国所有版本,包括后台

[复制链接]

469

主题

31

回帖

5507

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5507
发表于 2015-8-27 09:28:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一、增加扩展变量如(图1.jpg)

图1.jpg

地区(diqu):设置地区名,如:武汉

百度地图key(baidumapkey):申请百度地图api,填写密钥


二、后台分别建立字段
[!--lng--][!--lat--][!--zoom--]
图2.png
注意里面 maptuodong.js 文件引入路径。

maptuodong.js maptuodong.js (3.33 KB, 下载次数: 446)
  1. var get = {
  2.     byId: function(id) {
  3.         return typeof id === "string" ? document.getElementById(id) : id
  4.     },
  5.     byClass: function(sClass, oParent) {
  6.         var aClass = [];
  7.         var reClass = new RegExp("(^| )" + sClass + "( |$)");
  8.         var aElem = this.byTagName("*", oParent);
  9.         for (var i = 0; i < aElem.length; i++) reClass.test(aElem[i].className) && aClass.push(aElem[i]);
  10.         return aClass
  11.     },
  12.     byTagName: function(elem, obj) {
  13.         return (obj || document).getElementsByTagName(elem)
  14.     }
  15. };
  16. var dragMinWidth = 800;
  17. var dragMinHeight = 600;
  18. /*-------------------------- +
  19. 拖拽函数
  20. +-------------------------- */
  21. function drag(oDrag, handle){
  22.     var disX = dixY = 0;
  23.     var oMax = get.byClass("max", oDrag)[0];
  24.     var oRevert = get.byClass("revert", oDrag)[0];
  25.     var oClose = get.byClass("close", oDrag)[0];
  26.     var allMap = document.getElementById("allmap");
  27.     handle = handle || oDrag;
  28.     handle.style.cursor = "move";
  29.     handle.onmousedown = function (event){
  30.         var event = event || window.event;
  31.         disX = event.clientX - oDrag.offsetLeft;
  32.         disY = event.clientY - oDrag.offsetTop;
  33.         document.onmousemove = function (event){
  34.             var event = event || window.event;
  35.             var iL = event.clientX - disX;
  36.             var iT = event.clientY - disY;
  37.             var maxL = document.documentElement.clientWidth - oDrag.offsetWidth;
  38.             var maxT = document.documentElement.clientHeight - oDrag.offsetHeight;
  39.             iL <= 0 && (iL = 0);
  40.             iT <= 0 && (iT = 0);
  41.             iL >= maxL && (iL = maxL);
  42.             iT >= maxT && (iT = maxT);
  43.             oDrag.style.left = iL + "px";
  44.             oDrag.style.top = iT + "px";
  45.             return false
  46.         };
  47.         document.onmouseup = function (){
  48.             document.onmousemove = null;
  49.             document.onmouseup = null;
  50.             this.releaseCapture && this.releaseCapture()
  51.         };
  52.         this.setCapture && this.setCapture();
  53.         return false
  54.     };
  55.     //最大化按钮
  56.     oMax.onclick = function (){
  57.         oDrag.style.top = oDrag.style.left = 0;
  58.         //整个窗体
  59.         oDrag.style.width = document.documentElement.clientWidth - 2 + "px";
  60.         oDrag.style.height = document.documentElement.clientHeight - 2 + "px";
  61.         //地图大小
  62.         allMap.style.width = document.documentElement.clientWidth - 15 + "px";
  63.         allMap.style.height = document.documentElement.clientHeight - 100 + "px";
  64.         this.style.display = "none";
  65.         oRevert.style.display = "block";
  66.     };
  67.     //还原按钮
  68.     oRevert.onclick = function (){
  69.         oDrag.style.width = dragMinWidth + "px";
  70.         oDrag.style.height = dragMinHeight + "px";
  71.         oDrag.style.left = (document.documentElement.clientWidth - oDrag.offsetWidth) / 2 + "px";
  72.         oDrag.style.top = (document.documentElement.clientHeight - oDrag.offsetHeight) / 2 + "px";
  73.         //地图大小
  74.         allMap.style.width = "790px";
  75.         allMap.style.height = "500px";
  76.         this.style.display = "none";
  77.         oMax.style.display = "block";
  78.     };
  79.     //关闭按钮
  80.     oClose.onclick = function (){
  81.         map.clearOverlays();
  82.         document.getElementById("lng").value = '';
  83.         document.getElementById("lat").value = '';
  84.         oDrag.style.display = "none";
  85.     };
  86. }
复制代码
模型表单代码:

  1. <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=<?=$public_r['add_baidumapkey']?>"></script>
  2. <script src="http://api.map.baidu.com/library/MarkerTool/1.2/src/MarkerTool_min.js" type="text/javascript"></script>
  3. <script type="text/javascript" src="http://api.map.baidu.com/library/CityList/1.4/src/CityList_min.js"></script>
  4. <script type="text/javascript" src="maptuodong.js"></script>
  5. <style type="text/css">
  6.         /* drag */
  7.         #main { position:relative;}
  8.         #drag{position:absolute;top:22px;left:290px;width:800px;height:600px;background:#e9e9e9;border:1px solid #444;border-radius:5px;box-shadow:0 1px 3px 2px #666;display: none}
  9.         #drag .title{position:relative;height:27px;margin:5px;}
  10.         #drag .title h2{font-size:14px;height:27px;line-height:24px;border-bottom:1px solid #A1B4B0;}
  11.         #drag .title div{position:absolute;height:19px;top:2px;right:0;}
  12.         #drag .title a{float:left;width:21px;height:19px;display:block;margin-left:5px;background:url(./images/tool.png) no-repeat;}
  13.         #drag .title a.max{background-position:-60px 0;}
  14.         #drag .title a.max:hover{background-position:-60px -29px;}
  15.         #drag .title a.revert{background-position:-149px 0;display:none;}
  16.         #drag .title a.revert:hover{background-position:-149px -29px;}
  17.         #drag .title a.close{background-position:-89px 0;}
  18.         #drag .title a.close:hover{background-position:-89px -29px;}
  19.         #drag .content{overflow:auto;margin:0 5px;}

  20.         #f_container{border: 1px solid #999999;position: absolute;top:50px;left: 10px;z-index: 1000;    }
  21.         #container{width:290px;overflow: hidden;height: 20px;background:#F2F3F5;border: 5px solid #F2F3F5; }
  22.         #container select{border: 1px solid #ccc;}
  23.         .content .btn,.content .rbtn{width:105px; height: 30px;font-size: 13px; }
  24.         
  25. </style>

  26. [!--lng--][!--lat--][!--zoom--]
  27.       <input type="button" value="开始标注" id="biaozhu" onclick="show()" style="width:100px;height:30px;">
  28.       <br /><div id='show_map' style="width:300px;height:250px;"></div></td>
  29.   <div id="drag">
  30.         <div class="title">
  31.                 <h2>1.选择位置>2.标注位置>3.保存位置</h2>
  32.                 <div>
  33.                         <a class="max" href="javascript:;" title="最大化"></a>
  34.                         <a class="revert" href="javascript:;" title="还原"></a>
  35.                         <a class="close" href="javascript:;" title="关闭"></a>
  36.                 </div>
  37.         </div>
  38.         <div class="content">
  39.                 <div id="f_container">
  40.                         <div id="container"></div>
  41.                 </div>
  42.                 <div id="allmap" style="width:790px;height:500px;"></div>
  43.                 <div style="margin-top: 15px;text-align: right">
  44.                         <input type="button" onclick="showMap();" class="btn" value="保存">
  45.                         <input type="button" onclick="dhide()" class="rbtn" value="取消">
  46.                 </div>
  47.         </div>
  48. </div>
  49. <script type="text/javascript">
  50.         var marker, oDrag = document.getElementById("drag");
  51.         // 百度地图API功能
  52.         var map = new BMap.Map("allmap");            // 创建Map实例
  53.         map.enableScrollWheelZoom(true);
  54.         map.addControl(new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT}));    // 右下比例尺
  55.         map.setDefaultCursor("Crosshair");//鼠标样式
  56.         map.addControl(new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_RIGHT}));  //右上角,仅包含平移和缩放按钮
  57.         var cityList = new BMapLib.CityList({
  58.                 container: 'container',
  59.                 map: map
  60.         });
  61.         map.addEventListener("click", showInfo);
  62.         function showInfo(e){
  63.                 map.clearOverlays();
  64.                 marker = new BMap.Marker(new BMap.Point(e.point.lng, e.point.lat));  // 创建标注
  65.                 map.addOverlay(marker);
  66.                 //获取经纬度
  67.                 document.getElementById("lng").value = e.point.lng;
  68.                 document.getElementById("lat").value = e.point.lat;
  69.                 document.getElementById("zoom").value = map.getZoom();
  70.         }

  71.         function show(){
  72.                 map.centerAndZoom('<?=$public_r['add_diqu']?>',12);                   // 初始化地图,设置城市和地图级别。
  73.                 oDrag.style.display = "block";
  74.         }
  75.         function dhide(){
  76.                 map.clearOverlays();
  77.                 document.getElementById("lng").value = '';
  78.                 document.getElementById("lat").value = '';
  79.                 oDrag.style.display = "none";
  80.         }
  81.         
  82.         function showMap(){
  83.                 oDrag.style.display = "none";
  84.                 var map1 = new BMap.Map("show_map");
  85.                 var lng = document.getElementById("lng").value;
  86.                 var lat = document.getElementById("lat").value;
  87.                 var zoom = document.getElementById("zoom").value;
  88.                 <?
  89.                 $zoom=$r[zoom]?$r[zoom]:'map.getZoom()';
  90.                 ?>
  91.                 map1.centerAndZoom(new BMap.Point(lng, lat), <?=$zoom?>);
  92.                 var marker1 = new BMap.Marker(new BMap.Point(lng, lat));  // 创建标注
  93.                 map1.addOverlay(marker1);              // 将标注添加到地图中
  94.         }
  95.         
  96.         <?
  97.         if($r[lng]&&$r[lat]){
  98. ?>showMap();<?
  99.         }
  100.         ?>
  101. </script>
复制代码

截图演示:
演示1.jpg
演示2.jpg
演示3.jpg
感谢帝国cms网友分享,特此整理!
打包下载 百度地图标注.zip (24.29 KB, 下载次数: 426)

1

主题

10

回帖

86

积分

注册会员

Rank: 2

积分
86
发表于 2018-7-11 14:32:07 | 显示全部楼层
请问如何让他浮动在屏幕中间

469

主题

31

回帖

5507

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5507
 楼主| 发表于 2018-7-11 17:40:56 | 显示全部楼层
chizhuy 发表于 2018-7-11 14:32
请问如何让他浮动在屏幕中间

这是太早的 12年左右的教程了,不过意思都差不多。要在屏幕正中间 需要借助其他第三方的弹出层插件,比如layui之类的

1

主题

10

回帖

86

积分

注册会员

Rank: 2

积分
86
发表于 2018-7-14 17:16:08 | 显示全部楼层
admin 发表于 2018-7-11 17:40
这是太早的 12年左右的教程了,不过意思都差不多。要在屏幕正中间 需要借助其他第三方的弹出层插件,比如l ...

好的,谢谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|PHPIN.NET ( 冀ICP备12000898号-14 )|网站地图

GMT+8, 2024-4-20 17:30

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表