map.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. <?php
  2. defined('IN_PHPCMS') or exit('No permission resources.');
  3. $field = remove_xss(safe_replace(trim($_GET['field'])));
  4. $modelid = intval($_GET['modelid']);
  5. $data = getcache('model_field_'.$modelid,'model');
  6. $setting = string2array($data[$field]['setting']);
  7. $key = $_GET['api_key'] ? safe_replace($_GET['api_key']) : $setting['api_key'];
  8. $key = str_replace(array('/','(',')','&',';'),'',$key);
  9. $maptype = $_GET['maptype'] ? intval($_GET['maptype']) : ($setting['maptype'] ? $setting['maptype'] : 1);
  10. $defaultcity = $_GET['defaultcity'] ? $_GET['defaultcity'] : ($setting['defaultcity'] ? $setting['defaultcity'] : '北京');
  11. $defaultcity = remove_xss(safe_replace($defaultcity));
  12. if(CHARSET=="utf-8" && !is_utf8($defaultcity)) exit('-1');
  13. if(CHARSET=="gbk" && is_utf8($defaultcity)) exit('-2');
  14. $hotcitys = explode(",",$setting['hotcitys']);
  15. if(!isset($_GET['city'])) {
  16. ?>
  17. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  18. <html xmlns="http://www.w3.org/1999/xhtml"<?php if(isset($addbg)) { ?> class="addbg"<?php } ?>>
  19. <head>
  20. <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET ?>">
  21. <?php if($maptype == 1) {?>
  22. <script src="http://app.mapabc.com/apis?&t=flashmap&v=2.4&key=<?php echo $key?>&hl=zh-CN" type="text/javascript"></script>
  23. <?php } elseif($maptype == 2) {?>
  24. <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.2&key=<?php echo $key?>"></script></script>
  25. <?php }?>
  26. <script type="text/javascript" src="<?php echo JS_PATH ?>jquery.min.js"></script>
  27. <style type="text/css">
  28. *{ padding:0; margin:0}
  29. body{font-size: 12px;}
  30. #toolbar{ background-color:#E5ECF9;zoom:1; height:24px; line-height:24px; padding:0 12px; margin-top:3px; position:relative}
  31. #toolbar a{display:inline-block;zoom:1;*display:inline; color:#4673CC}
  32. #toolbar a.mark,#toolbar a.map{ background: url(<?php echo IMG_PATH ?>icon/map_mark.png) no-repeat left 50%; padding:0 0 0 20px}
  33. #toolbar a.map{ background-image:url(<?php echo IMG_PATH ?>icon/map.png); margin-left:12px}
  34. #toolbar .right{ float:right;}
  35. #toolbar .CityBox{position:absolute; left:40px; top:30px; background-color:#fff; border:1px solid #8BA4D8; padding:2px; z-index:1; width:200px; display:none}
  36. #toolbar .CityBox h4{background-color:#E5ECF9; line-height:20px; height:20px; padding:0 6px; color:#6688CC; position:relative}
  37. #toolbar .CityBox h4 div.top{background: url(<?php echo IMG_PATH ?>topo.png) no-repeat; height:6px; width:11px; position:absolute; top:-9px; left:38px; line-height:normal; font-size:0}
  38. #toolbar .CityBox .content{ padding:6px; height:150px;overflow-y:auto; padding-bottom:8px}
  39. #toolbar .CityBox a.close{background: url(<?php echo IMG_PATH ?>cross.png) no-repeat left 3px; display:block; width:16px; height:16px;position: absolute;outline:none;right:3px; bottom:1px}
  40. #toolbar .CityBox a.close:hover{background-position: left -46px}
  41. #toolbar .CityBox .line{ height:6px; border-bottom:1px solid #EBEBEB; margin-bottom:5px;}
  42. #mapObj{width:699px;height:388px; padding-top:1px}
  43. </style>
  44. </head>
  45. <body>
  46. <div id="toolbar">
  47. <div class="selCity">
  48. <div class="right"><a href="javascript:;" class="mark" onClick="addMarker();"><?php echo L('api_addmark','','map')?></a><a href="javascript:;" onClick="removeMarker();" class="map"><?php echo L('api_resetmap','','map')?></a></div>
  49. <strong id="curCity"><?php echo $defaultcity?></strong> [<a onClick="mapClose();" id="curCityText" href="javascript:;"><?php echo L('api_changecity','','map')?></a>]
  50. </div>
  51. <div class="CityBox">
  52. <h4><?php echo L('api_citylist','','map')?><div class="top"></div><a href="javascript:;" class="close" onClick="mapClose();"></a></h4>
  53. <div class="content">
  54. <p>
  55. <?php foreach($hotcitys as $n=>$city) {?>
  56. <a href="javascript:;" onClick="keywordSearch('<?php echo trim($city)?>')"><?php echo $city?></a>
  57. <?php } ?>
  58. </p>
  59. <div class="line"></div>
  60. <input type="text" value="<?php echo L('api_inputcity','','map')?>" style=" width:140px; height:18px" name="citywd" id="citywd" onclick="$(this).val('');">
  61. <input type="submit" value="<?php echo L('api_citysear_submit','','map')?>" class="city_submit" onClick="keywordSearch()">
  62. </div>
  63. </div>
  64. </div>
  65. <div id="mapObj" class="view"></div>
  66. <?php if($maptype == 1) {?>
  67. <SCRIPT LANGUAGE="JavaScript">
  68. //设置中心点为北京
  69. //设置地图初始化参数对象
  70. var mapOptions = new MMapOptions();
  71. var defaultcity = "<?php echo $defaultcity;?>";
  72. mapOptions.toolbar = MConstants.MINI;
  73. mapOptions.scale = new MPoint(20,20);
  74. mapOptions.zoom = 10;
  75. mapOptions.overviewMap = MConstants.SHOW;
  76. mapOptions.scale = MConstants.SHOW;
  77. mapOptions.mapComButton = MConstants.SHOW_NO
  78. //创建地图对象
  79. var mapObj = new MMap("mapObj", mapOptions);
  80. var maptools = new MMapTools(mapObj);
  81. maptools.setCenterByCity(defaultcity);
  82. if(window.top.$('#<?php echo $field?>').val()) {
  83. drawPoints();
  84. }
  85. //设置切换城市
  86. function keywordSearch(city) {
  87. if(city==null || city=='') {
  88. var city=$("#citywd").val();
  89. }
  90. var cn_city = city;
  91. var city = encodeURI(city);
  92. var url = "api.php?op=map&city="+city;
  93. $.get(url,function(data){
  94. if(data) {
  95. maptools.setCenterByCity(data);
  96. mapObj.setZoomLevel(10);
  97. $("#curCity").html(cn_city);
  98. }
  99. })
  100. }
  101. function addMarker(){
  102. var address = $(window.parent.document).find("input[id='address']").val();
  103. var tipOption=new MTipOptions();//添加信息窗口
  104. tipOption.tipType = MConstants.HTML_BUBBLE_TIP;//信息窗口标题
  105. tipOption.title = address;//信息窗口标题
  106. tipOption.content = address;//信息窗口内容
  107. var markerOption = new MMarkerOptions();
  108. markerOption.imageUrl='<?php echo IMG_PATH ?>icon/mak.png';
  109. markerOption.picAgent=false;
  110. markerOption.imageAlign=MConstants.BOTTOM_CENTER;
  111. markerOption.isBounce=false;
  112. markerOption.isEditable=true;
  113. markerOption.tipOption = tipOption;
  114. markerOption.canShowTip= address ? true : false;
  115. markerOption.rotation="0";
  116. markerOption.dimorphicColor="0x00A0FF";
  117. var center = mapObj.getCenter();
  118. var ZoomLevel = mapObj.getZoomLevel();
  119. Mmarker = new MMarker(new MLngLat(center.lngX,center.latY),markerOption);
  120. Mmarker.id="mark101";
  121. mapObj.addOverlay(Mmarker,true) ;
  122. mapObj.addEventListener(mapObj,MConstants.MOUSE_UP,mouseUp);
  123. window.top.$('#<?php echo $field?>').val(center.lngX+'|'+center.latY+'|'+ZoomLevel);
  124. }
  125. function removeMarker() {
  126. mapObj.removeAllOverlays();
  127. maptools.setCenterByCity(defaultcity);
  128. $("#curCity").html('<?php echo $defaultcity?>');
  129. mapOptions.zoom = 10;
  130. window.top.$('#<?php echo $field?>').val('');
  131. }
  132. function mouseUp(param){
  133. var object=mapObj.getOverlayById('mark101');
  134. var lngX = object.lnglat.lngX;
  135. var latY = object.lnglat.latY;
  136. var ZoomLevel = mapObj.getZoomLevel();
  137. window.top.$('#<?php echo $field?>').val(lngX+'|'+latY+'|'+ZoomLevel);
  138. }
  139. function mapClose(){
  140. var CityBox=$(".CityBox");
  141. if(CityBox.css('display')=='none'){
  142. CityBox.show();
  143. }else{
  144. CityBox.hide();
  145. }
  146. }
  147. function drawPoints(){
  148. var data = window.top.$('#<?php echo $field?>').val();
  149. var data = data.split('|');
  150. var lngX = data[0];
  151. var latY = data[1];
  152. var zoom = data[2]? data[2] : 10
  153. mapObj.setZoomAndCenter(zoom,new MLngLat(lngX,latY));
  154. var markerOption = new MMarkerOptions();
  155. var tipOption=new MTipOptions();//添加信息窗口
  156. var address = "";
  157. tipOption.tipType = MConstants.HTML_BUBBLE_TIP;//信息窗口标题
  158. tipOption.title = address;//信息窗口标题
  159. tipOption.content = address;//信息窗口内容
  160. var markerOption = new MMarkerOptions();
  161. markerOption.imageUrl="<?php echo IMG_PATH ?>icon/mak.png";
  162. markerOption.picAgent=false;
  163. markerOption.isEditable=true;
  164. markerOption.imageAlign=MConstants.BOTTOM_CENTER;
  165. markerOption.tipOption = tipOption;
  166. markerOption.canShowTip= address ? true : false;
  167. markerOption.dimorphicColor="0x00A0FF";
  168. Mmarker = new MMarker(new MLngLat(lngX,latY),markerOption);
  169. Mmarker.id="mark101";
  170. mapObj.addOverlay(Mmarker,true);
  171. mapObj.addEventListener(mapObj,MConstants.MOUSE_UP,mouseUp);
  172. }
  173. </script>
  174. <style>
  175. .MFMP_pngImg0{ left:0; bottom:0; display:none}
  176. </style>
  177. <?php } elseif($maptype == 2) {?>
  178. <script type="text/javascript">
  179. var mapObj = new BMap.Map("mapObj"); // 创建地图实例
  180. //向地图中添加缩放控件
  181. var ctrl_nav = new BMap.NavigationControl({anchor:BMAP_ANCHOR_TOP_LEFT,type:BMAP_NAVIGATION_CONTROL_LARGE});
  182. mapObj.addControl(ctrl_nav);
  183. mapObj.enableDragging();//启用地图拖拽事件,默认启用(可不写)
  184. mapObj.enableScrollWheelZoom();//启用地图滚轮放大缩小
  185. mapObj.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)
  186. mapObj.enableKeyboard();//启用键盘上下左右键移动地图
  187. //mapObj.centerAndZoom("<?php echo $defaultcity?>");
  188. if(window.top.$('#<?php echo $field?>').val()) {
  189. drawPoints();
  190. } else {
  191. mapObj.centerAndZoom("<?php echo $defaultcity?>");
  192. }
  193. //设置切换城市
  194. function keywordSearch(city) {
  195. if(city==null || city=='') {
  196. var city=$("#citywd").val();
  197. }
  198. mapObj.setCenter(city);
  199. $("#curCity").html(city);
  200. }
  201. function drawPoints(){
  202. var data = window.top.$('#<?php echo $field?>').val();
  203. var data = data.split('|');
  204. var lngX = data[0];
  205. var latY = data[1];
  206. var zoom = data[2] ? data[2] : 10;
  207. mapObj.centerAndZoom(new BMap.Point(lngX,latY),zoom);
  208. // 创建图标对象
  209. var myIcon = new BMap.Icon('<?php echo IMG_PATH ?>icon/mak.png', new BMap.Size(27, 45));
  210. // 创建标注对象并添加到地图
  211. var center = mapObj.getCenter();
  212. var point = new BMap.Point(lngX,latY);
  213. var marker = new BMap.Marker(point, {icon: myIcon});
  214. marker.enableDragging();
  215. mapObj.addOverlay(marker);
  216. var ZoomLevel = mapObj.getZoom();
  217. marker.addEventListener("dragend", function(e){
  218. window.top.$('#<?php echo $field?>').val(e.point.lng+'|'+e.point.lat+'|'+ZoomLevel);
  219. })
  220. }
  221. function addMarker(){
  222. mapObj.clearOverlays();
  223. // 创建图标对象
  224. var myIcon = new BMap.Icon('<?php echo IMG_PATH ?>icon/mak.png', new BMap.Size(27, 45));
  225. // 创建标注对象并添加到地图
  226. var center = mapObj.getCenter();
  227. var point = new BMap.Point(center.lng,center.lat);
  228. var marker = new BMap.Marker(point, {icon: myIcon});
  229. marker.enableDragging();
  230. mapObj.addOverlay(marker);
  231. var ZoomLevel = mapObj.getZoom();
  232. window.top.$('#<?php echo $field?>').val(center.lng+'|'+center.lat+'|'+ZoomLevel);
  233. marker.addEventListener("dragend", function(e){
  234. window.top.$('#<?php echo $field?>').val(e.point.lng+'|'+e.point.lat+'|'+ZoomLevel);
  235. })
  236. }
  237. function mapClose(){
  238. var CityBox=$(".CityBox");
  239. if(CityBox.css('display')=='none'){
  240. CityBox.show();
  241. }else{
  242. CityBox.hide();
  243. }
  244. }
  245. function removeMarker() {
  246. mapObj.clearOverlays();
  247. mapObj.centerAndZoom("<?php echo $defaultcity?>");
  248. $("#curCity").html('<?php echo $defaultcity?>');
  249. window.top.$('#<?php echo $field?>').val('');
  250. }
  251. </script>
  252. <?php }?>
  253. </body>
  254. </html>
  255. <?php
  256. } elseif(!empty($_GET['city']) && $maptype==1) {
  257. if(!$_GET['city']) showmessage(L('error'));
  258. $city = urldecode(trim($_GET['city']));
  259. $city = str_replace(array('<','>','"',"'",'/','(',')','&',';'),'',$city);
  260. echo $city;
  261. }
  262. ?>