map.html 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title></title>
  6. <script type="text/javascript" src="../internal.js"></script>
  7. <!-- <script type="text/javascript" src="https://api.map.baidu.com/api?v=1.1&services=true"></script> -->
  8. <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.1&ak=QXSZyPZk26shrYzAXjTkDLx5LbRCHECz&s=1"></script>
  9. <style type="text/css">
  10. .content{width:530px; height: 350px;margin: 10px auto;}
  11. .content table{width: 100%}
  12. .content table td{vertical-align: middle;}
  13. #city,#address{height:21px;background: #FFF;border:1px solid #d7d7d7; line-height: 21px;}
  14. #city{width:60px}
  15. #address{width:130px}
  16. #is_dynamic_label span{vertical-align:middle;margin: 3px 0px 3px 3px;}
  17. #is_dynamic_label input{vertical-align:middle;margin: 3px 3px 3px 50px;}
  18. </style>
  19. </head>
  20. <body>
  21. <div class="content">
  22. <table>
  23. <tr>
  24. <td><var id="lang_city"></var>:</td>
  25. <td><input id="city" type="text" /></td>
  26. <td><var id="lang_address"></var>:</td>
  27. <td><input id="address" type="text" value="" /></td>
  28. <td><a href="javascript:doSearch()" class="button"><var id="lang_search"></var></a></td>
  29. <td><label id="is_dynamic_label" for="is_dynamic"><input id="is_dynamic" type="checkbox" name="is_dynamic" /><span><var id="lang_dynamicmap"></var></span></label></td>
  30. </tr>
  31. </table>
  32. <div style="width:100%;height:340px;margin:5px auto;border:1px solid gray" id="container"></div>
  33. </div>
  34. <script type="text/javascript">
  35. var map = new BMap.Map("container"),marker,point,styleStr;
  36. map.enableScrollWheelZoom();
  37. map.enableContinuousZoom();
  38. function doSearch(){
  39. if (!document.getElementById('city').value) {
  40. alert(lang.cityMsg);
  41. return;
  42. }
  43. var search = new BMap.LocalSearch(document.getElementById('city').value, {
  44. onSearchComplete: function (results){
  45. if (results && results.getNumPois()) {
  46. var points = [];
  47. for (var i=0; i<results.getCurrentNumPois(); i++) {
  48. points.push(results.getPoi(i).point);
  49. }
  50. if (points.length > 1) {
  51. map.setViewport(points);
  52. } else {
  53. map.centerAndZoom(points[0], 13);
  54. }
  55. point = map.getCenter();
  56. marker.setPoint(point);
  57. } else {
  58. alert(lang.errorMsg);
  59. }
  60. }
  61. });
  62. search.search(document.getElementById('address').value || document.getElementById('city').value);
  63. }
  64. //获得参数
  65. function getPars(str,par){
  66. var reg = new RegExp(par+"=((\\d+|[.,])*)","g");
  67. return reg.exec(str)[1];
  68. }
  69. function init(){
  70. var mapNode = editor.selection.getRange().getClosedNode(),
  71. isMapImg = mapNode && /api[.]map[.]baidu[.]com/ig.test(mapNode.getAttribute("src")),
  72. isMapIframe = mapNode && domUtils.hasClass(mapNode, 'ueditor_baidumap');
  73. if(isMapImg || isMapIframe){
  74. var url, centerPos, markerPos;
  75. if(isMapIframe) {
  76. url = decodeURIComponent(mapNode.getAttribute("src"));
  77. $G('is_dynamic').checked = true;
  78. styleStr = mapNode.style.cssText;
  79. } else {
  80. url = mapNode.getAttribute("src");
  81. styleStr = mapNode.style.cssText;
  82. }
  83. centerPos = getPars(url,"center").split(",");
  84. markerPos = getPars(url, "markers").split(",");
  85. point = new BMap.Point(Number(centerPos[0]),Number(centerPos[1]));
  86. marker = new BMap.Marker(new BMap.Point(Number(markerPos[0]), Number(markerPos[1])));
  87. map.addControl(new BMap.NavigationControl());
  88. map.centerAndZoom(point, Number(getPars(url,"zoom")));
  89. }else{
  90. point = new BMap.Point(116.404, 39.915); // 创建点坐标
  91. marker = new BMap.Marker(point);
  92. map.addControl(new BMap.NavigationControl());
  93. map.centerAndZoom(point, 10); // 初始化地图,设置中心点坐标和地图级别。
  94. }
  95. marker.enableDragging();
  96. map.addOverlay(marker);
  97. }
  98. init();
  99. document.getElementById('address').onkeydown = function (evt){
  100. evt = evt || event;
  101. if (evt.keyCode == 13) {
  102. doSearch();
  103. }
  104. };
  105. dialog.onok = function (){
  106. var center = map.getCenter();
  107. var size = map.getSize();
  108. var mapWidth = size.width;
  109. var mapHeight = size.height;
  110. var point = marker.getPosition();
  111. var zoom = map.getZoom();
  112. if($G('is_dynamic').checked) {
  113. var URL = editor.options.UEDITOR_HOME_URL,
  114. url = [URL + (/\/$/.test(URL) ? '':'/') + "dialogs/map/show.html" +
  115. '#center=' + center.lng + ',' + center.lat,
  116. '&zoom=' + zoom,
  117. '&width=' + mapWidth,
  118. '&height=' + mapHeight,
  119. '&markers=' + point.lng + ',' + point.lat,
  120. '&markerStyles=' + 'l,A'].join('');
  121. editor.execCommand('inserthtml', '<iframe class="ueditor_baidumap" src="' + url + '"' + (styleStr ? ' style="' + styleStr + '"' :'') + ' frameborder="0" width="' + (mapWidth+4) + '" height="' + (mapHeight+4) + '"></iframe>');
  122. } else {
  123. var url = "https://api.map.baidu.com/staticimage?s=1&center=" + center.lng + ',' + center.lat +
  124. "&zoom=" + zoom + "&width=" + size.width + '&height=' + size.height + "&markers=" + point.lng + ',' + point.lat;
  125. editor.execCommand('inserthtml', '<img width="'+ size.width +'"height="'+ size.height +'" src="' + url + '"' + (styleStr ? ' style="' + styleStr + '"' :'') + '/>');
  126. }
  127. };
  128. document.getElementById("address").focus();
  129. </script>
  130. </body>
  131. </html>