first commit

This commit is contained in:
2026-01-16 14:13:44 +08:00
commit 903ff8d495
34603 changed files with 8585054 additions and 0 deletions

View File

@ -0,0 +1,135 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript" src="../internal.js"></script>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.1&services=true"></script>
<style type="text/css">
.content{width:530px; height: 350px;margin: 10px auto;}
.content table{width: 100%}
.content table td{vertical-align: middle;}
#city,#address{height:21px;background: #FFF;border:1px solid #d7d7d7; line-height: 21px;}
#city{width:60px}
#address{width:130px}
#is_dynamic_label span{vertical-align:middle;margin: 3px 0px 3px 3px;}
#is_dynamic_label input{vertical-align:middle;margin: 3px 3px 3px 50px;}
</style>
</head>
<body>
<div class="content">
<table>
<tr>
<td><var id="lang_city"></var>:</td>
<td><input id="city" type="text" /></td>
<td><var id="lang_address"></var>:</td>
<td><input id="address" type="text" value="" /></td>
<td><a href="javascript:doSearch()" class="button"><var id="lang_search"></var></a></td>
<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>
</tr>
</table>
<div style="width:100%;height:340px;margin:5px auto;border:1px solid gray" id="container"></div>
</div>
<script type="text/javascript">
var map = new BMap.Map("container"),marker,point,styleStr;
map.enableScrollWheelZoom();
map.enableContinuousZoom();
function doSearch(){
if (!document.getElementById('city').value) {
alert(lang.cityMsg);
return;
}
var search = new BMap.LocalSearch(document.getElementById('city').value, {
onSearchComplete: function (results){
if (results && results.getNumPois()) {
var points = [];
for (var i=0; i<results.getCurrentNumPois(); i++) {
points.push(results.getPoi(i).point);
}
if (points.length > 1) {
map.setViewport(points);
} else {
map.centerAndZoom(points[0], 13);
}
point = map.getCenter();
marker.setPoint(point);
} else {
alert(lang.errorMsg);
}
}
});
search.search(document.getElementById('address').value || document.getElementById('city').value);
}
//获得参数
function getPars(str,par){
var reg = new RegExp(par+"=((\\d+|[.,])*)","g");
return reg.exec(str)[1];
}
function init(){
var mapNode = editor.selection.getRange().getClosedNode(),
isMapImg = mapNode && /api[.]map[.]baidu[.]com/ig.test(mapNode.getAttribute("src")),
isMapIframe = mapNode && domUtils.hasClass(mapNode, 'ueditor_baidumap');
if(isMapImg || isMapIframe){
var url, centerPos, markerPos;
if(isMapIframe) {
url = decodeURIComponent(mapNode.getAttribute("src"));
$G('is_dynamic').checked = true;
styleStr = mapNode.style.cssText;
} else {
url = mapNode.getAttribute("src");
styleStr = mapNode.style.cssText;
}
centerPos = getPars(url,"center").split(",");
markerPos = getPars(url, "markers").split(",");
point = new BMap.Point(Number(centerPos[0]),Number(centerPos[1]));
marker = new BMap.Marker(new BMap.Point(Number(markerPos[0]), Number(markerPos[1])));
map.addControl(new BMap.NavigationControl());
map.centerAndZoom(point, Number(getPars(url,"zoom")));
}else{
point = new BMap.Point(116.404, 39.915); // 创建点坐标
marker = new BMap.Marker(point);
map.addControl(new BMap.NavigationControl());
map.centerAndZoom(point, 10); // 初始化地图,设置中心点坐标和地图级别。
}
marker.enableDragging();
map.addOverlay(marker);
}
init();
document.getElementById('address').onkeydown = function (evt){
evt = evt || event;
if (evt.keyCode == 13) {
doSearch();
}
};
dialog.onok = function (){
var center = map.getCenter();
var zoom = map.zoomLevel;
var size = map.getSize();
var mapWidth = size.width;
var mapHeight = size.height;
var point = marker.getPoint();
if($G('is_dynamic').checked) {
var URL = editor.options.UEDITOR_HOME_URL,
url = [URL + (/\/$/.test(URL) ? '':'/') + "dialogs/map/show.html" +
'#center=' + center.lng + ',' + center.lat,
'&zoom=' + zoom,
'&width=' + mapWidth,
'&height=' + mapHeight,
'&markers=' + point.lng + ',' + point.lat,
'&markerStyles=' + 'l,A'].join('');
editor.execCommand('inserthtml', '<iframe class="ueditor_baidumap" src="' + url + '"' + (styleStr ? ' style="' + styleStr + '"' :'') + ' frameborder="0" width="' + (mapWidth+4) + '" height="' + (mapHeight+4) + '"></iframe>');
} else {
var url = "http://api.map.baidu.com/staticimage?center=" + center.lng + ',' + center.lat +
"&zoom=" + zoom + "&width=" + size.width + '&height=' + size.height + "&markers=" + point.lng + ',' + point.lat;
editor.execCommand('inserthtml', '<img width="'+ size.width +'"height="'+ size.height +'" src="' + url + '"' + (styleStr ? ' style="' + styleStr + '"' :'') + '/>');
}
};
document.getElementById("address").focus();
</script>
</body>
</html>

View File

@ -0,0 +1,263 @@
(function () {
var widgetName = 'map';
UM.registerWidget(widgetName, {
tpl: "<style type=\"text/css\">" +
".edui-dialog-map .edui-map-content{width:530px; height: 350px;margin: 10px auto;}" +
".edui-dialog-map .edui-map-content table{width: 100%}" +
".edui-dialog-map .edui-map-content table td{vertical-align: middle;}" +
".edui-dialog-map .edui-map-button { border: 1px solid #ccc; float: left; cursor: default; height: 23px; width: 70px; cursor: pointer; margin: 0; font-size: 12px; line-height: 24px; text-align: center; }" +
".edui-dialog-map .edui-map-button:hover {background:#eee;}" +
".edui-dialog-map .edui-map-city,.edui-dialog-map .edui-map-address{height:21px;background: #FFF;border:1px solid #d7d7d7; line-height: 21px;}" +
".edui-dialog-map .edui-map-city{width:90px}" +
".edui-dialog-map .edui-map-address{width:150px}" +
".edui-dialog-map .edui-map-dynamic-label span{vertical-align:middle;margin: 3px 0px 3px 3px;}" +
".edui-dialog-map .edui-map-dynamic-label input{vertical-align:middle;margin: 3px;}" +
"</style>" +
"<div class=\"edui-map-content\">" +
"<table>" +
"<tr>" +
"<td><%=lang_city%>:</td>" +
"<td><input class=\"edui-map-city\" type=\"text\" value=\"<%=city.value%>\"/></td>" +
"<td><%=lang_address%>:</td>" +
"<td><input class=\"edui-map-address\" type=\"text\" value=\"\" /></td>" +
"<td><a class=\"edui-map-button\"><%=lang_search%></a></td>" +
"<td><label class=\"edui-map-dynamic-label\"><input class=\"edui-map-dynamic\" type=\"checkbox\" name=\"edui-map-dynamic\" /><span><%=lang_dynamicmap%></span></label></td>"+
"</tr>" +
"</table>" +
"<div style=\"width:100%;height:340px;margin:5px auto;border:1px solid gray\" class=\"edui-map-container\"></div>" +
"</div>" +
"<script class=\"edui-tpl-container\" type=\"text/plain\">" +
"<!DOCTYPE html>" +
"<html>" +
"<head>" +
"<title></title>" +
"</head>" +
"<body>" +
"<scr_ipt>" +
"window.onload = function(){" +
"var scripts = document.scripts || document.getElementsByTagName(\"script\")," +
"src = [];" +
"for( var i = 1, len = scripts.length; i<len; i++ ) {" +
"src.push( scripts[i].src );" +
"}" +
"parent.UM.getEditor(<<id>>).getWidgetData(\'map\').requestMapApi( src );" +
"};" +
"function mapReadyStateChange ( state ) { " +
" if ( state === 'complete' || state === 'loaded' ) {" +
" document.close(); " +
" } }" +
"</scr_ipt>" +
"<scr_ipt onreadystatechange='mapReadyStateChange(this.readyState);' onload='mapReadyStateChange(\"loaded\");' src=\"http://api.map.baidu.com/api?v=2.0&ak=6b6c1a67eaa7db1ca6d6da28e590e343&services=true\"></scr_ipt>" +
"</body>" +
"</html>" +
"</script>",
initContent: function (editor, $widget) {
var me = this,
lang = editor.getLang(widgetName),
theme_url = editor.options.themePath + editor.options.theme;
if( me.inited ) {
me.preventDefault();
return false;
}
me.inited = true;
me.lang = lang;
me.editor = editor;
me.root().html($.parseTmpl(me.tpl, $.extend({}, lang['static'], {
'theme_url': theme_url
})));
me.initRequestApi();
},
/**
* 初始化请求API
*/
initRequestApi: function () {
var $ifr = null;
//已经初始化过, 不用再次初始化
if (window.BMap && window.BMap.Map) {
this.initBaiduMap();
} else {
$ifr = $('<iframe style="display: none;"></iframe>');
$ifr.appendTo( this.root() );
$ifr = $ifr[ 0 ].contentWindow.document;
$ifr.open();
$ifr.write( this.root().find(".edui-tpl-container").html().replace( /scr_ipt/g, 'script').replace('<<id>>',"'" + this.editor.id + "'") );
}
},
requestMapApi: function (src) {
var me = this;
if (src.length) {
var _src = src[0];
src = src.slice(1);
if (_src) {
$.getScript(_src, function () {
me.requestMapApi(src);
});
} else {
me.requestMapApi(src);
}
} else {
me.initBaiduMap();
}
},
initBaiduMap: function () {
var $root = this.root(),
map = new BMap.Map($root.find(".edui-map-container")[0]),
me = this,
marker,
point,
imgcss,
img = $(me.editor.selection.getRange().getClosedNode());
map.enableInertialDragging();
map.enableScrollWheelZoom();
map.enableContinuousZoom();
if (img.length && /api[.]map[.]baidu[.]com/ig.test(img.attr("src"))) {
var url = img.attr("src"),
centerPos = me.getPars(url, "center").split(","),
markerPos = me.getPars(url, "markers").split(",");
point = new BMap.Point(Number(centerPos[0]), Number(centerPos[1]));
marker = new BMap.Marker(new BMap.Point(Number(markerPos[0]), Number(markerPos[1])));
map.addControl(new BMap.NavigationControl());
map.centerAndZoom(point, Number(me.getPars(url, "zoom")));
imgcss = img.attr('style');
} else {
point = new BMap.Point(116.404, 39.915); // 创建点坐标
marker = new BMap.Marker(point);
map.addControl(new BMap.NavigationControl());
map.centerAndZoom(point, 10); // 初始化地图,设置中心点坐标和地图级别。
}
marker.enableDragging();
map.addOverlay(marker);
me.map = map;
me.marker = marker;
me.imgcss = imgcss;
},
doSearch: function () {
var me = this,
city = me.root().find('.edui-map-city').val(),
address = me.root().find('.edui-map-address').val();
if (!city) {
alert(me.lang.cityMsg);
return;
}
var search = new BMap.LocalSearch(city, {
onSearchComplete: function (results) {
if (results && results.getNumPois()) {
var points = [];
for (var i = 0; i < results.getCurrentNumPois(); i++) {
points.push(results.getPoi(i).point);
}
if (points.length > 1) {
me.map.setViewport(points);
} else {
me.map.centerAndZoom(points[0], 13);
}
point = me.map.getCenter();
me.marker.setPoint(point);
} else {
alert(me.lang.errorMsg);
}
}
});
search.search(address || city);
},
getPars: function (str, par) {
var reg = new RegExp(par + "=((\\d+|[.,])*)", "g");
return reg.exec(str)[1];
},
reset: function(){
this.map && this.map.reset();
},
initEvent: function () {
var me = this,
$root = me.root();
$root.find('.edui-map-address').on('keydown', function (evt) {
evt = evt || event;
if (evt.keyCode == 13) {
me.doSearch();
return false;
}
});
$root.find(".edui-map-button").on('click', function (evt) {
me.doSearch();
});
$root.find(".edui-map-address").focus();
$root.on( "mousewheel DOMMouseScroll", function ( e ) {
return false;
} );
},
width: 580,
height: 408,
buttons: {
ok: {
exec: function (editor) {
var widget = editor.getWidgetData(widgetName),
center = widget.map.getCenter(),
zoom = widget.map.getZoom(),
size = widget.map.getSize(),
point = widget.marker.P;
if (widget.root().find(".edui-map-dynamic")[0].checked) {
var URL = editor.getOpt('UMEDITOR_HOME_URL'),
url = [URL + (/\/$/.test(URL) ? '':'/') + "dialogs/map/map.html" +
'#center=' + center.lng + ',' + center.lat,
'&zoom=' + zoom,
'&width=' + size.width,
'&height=' + size.height,
'&markers=' + point.lng + ',' + point.lat].join('');
editor.execCommand('inserthtml', '<iframe class="ueditor_baidumap" src="' + url + '" frameborder="0" width="' + (size.width+4) + '" height="' + (size.height+4) + '"></iframe>');
} else {
url = "http://api.map.baidu.com/staticimage?center=" + center.lng + ',' + center.lat +
"&zoom=" + zoom + "&width=" + size.width + '&height=' + size.height + "&markers=" + point.lng + ',' + point.lat;
editor.execCommand('inserthtml', '<img width="' + size.width + '"height="' + size.height + '" src="' + url + '"' + (widget.imgcss ? ' style="' + widget.imgcss + '"' : '') + '/>', true);
}
widget.reset();
}
},
cancel: {
exec: function(editor){
editor.getWidgetData(widgetName).reset();
}
}
}
});
})();

View File

@ -0,0 +1,118 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8"/>
<meta name="keywords" content="百度地图,百度地图API百度地图自定义工具百度地图所见即所得工具"/>
<meta name="description" content="百度地图API自定义地图帮助用户在可视化操作下生成百度地图"/>
<title>百度地图API自定义地图</title>
<!--引用百度地图API-->
<style type="text/css">
html, body {
margin: 0;
padding: 0;
overflow: hidden;
}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?key=&v=1.1&services=true"></script>
</head>
<body onload="initMap();">
<!--百度地图容器-->
<div style="width:697px;height:550px;border:#ccc solid 1px;" id="dituContent"></div>
</body>
<script type="text/javascript">
function getParam(name) {
return location.href.match(new RegExp('[?#&]' + name + '=([^?#&]+)', 'i')) ? RegExp.$1 : '';
}
var map, marker;
var centerParam = getParam('center');
var zoomParam = getParam('zoom');
var widthParam = getParam('width');
var heightParam = getParam('height');
var markersParam = getParam('markers');
var markerStylesParam = getParam('markerStyles');
//创建和初始化地图函数:
function initMap() {
// [FF]切换模式后报错
if (!window.BMap) {
return;
}
var dituContent = document.getElementById('dituContent');
dituContent.style.width = widthParam + 'px';
dituContent.style.height = heightParam + 'px';
createMap();//创建地图
setMapEvent();//设置地图事件
addMapControl();//向地图添加控件
// 创建标注
var markersArr = markersParam.split(',');
var point = new BMap.Point(markersArr[0], markersArr[1]);
marker = new BMap.Marker(point);
marker.enableDragging();
map.addOverlay(marker); // 将标注添加到地图中
if(parent.editor && parent.document.body.contentEditable=="true") { //在编辑状态下
setMapListener();//地图改变修改外层的iframe标签src属性
}
}
//创建地图函数:
function createMap() {
map = new BMap.Map("dituContent");//在百度地图容器中创建一个地图
var centerArr = centerParam.split(',');
var point = new BMap.Point(parseFloat(centerArr[0]), parseFloat(centerArr[1]));//定义一个中心点坐标
map.centerAndZoom(point, parseInt(zoomParam));//设定地图的中心点和坐标并将地图显示在地图容器中
}
//地图事件设置函数:
function setMapEvent() {
map.enableDragging();//启用地图拖拽事件,默认启用(可不写)
map.enableScrollWheelZoom();//启用地图滚轮放大缩小
map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)
map.enableKeyboard();//启用键盘上下左右键移动地图
}
//地图控件添加函数:
function addMapControl() {
//向地图中添加缩放控件
var ctrl_nav = new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_LEFT, type: BMAP_NAVIGATION_CONTROL_LARGE});
map.addControl(ctrl_nav);
//向地图中添加缩略图控件
var ctrl_ove = new BMap.OverviewMapControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT, isOpen: 1});
map.addControl(ctrl_ove);
//向地图中添加比例尺控件
var ctrl_sca = new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_LEFT});
map.addControl(ctrl_sca);
}
function setMapListener() {
var editor = parent.editor, containerIframe,
iframes = parent.document.getElementsByTagName('iframe');
for (var key in iframes) {
if (iframes[key].contentWindow == window) {
containerIframe = iframes[key];
break;
}
}
if (containerIframe) {
map.addEventListener('moveend', mapListenerHandler);
map.addEventListener('zoomend', mapListenerHandler);
marker.addEventListener('dragend', mapListenerHandler);
}
function mapListenerHandler() {
var zoom = map.getZoom(),
center = map.getCenter(),
marker = window.marker.getPoint();
containerIframe.src = containerIframe.src.
replace(new RegExp('([?#&])center=([^?#&]+)', 'i'), '$1center=' + center.lng + ',' + center.lat).
replace(new RegExp('([?#&])markers=([^?#&]+)', 'i'), '$1markers=' + marker.lng + ',' + marker.lat).
replace(new RegExp('([?#&])zoom=([^?#&]+)', 'i'), '$1zoom=' + zoom);
editor.fireEvent('saveScene');
}
}
</script>
</html>