116 lines
4.3 KiB
JavaScript
116 lines
4.3 KiB
JavaScript
/*******************************************************************************
|
|
* KindEditor - WYSIWYG HTML Editor for Internet
|
|
* Copyright (C) 2006-2011 kindsoft.net
|
|
*
|
|
* @author Roddy <luolonghao@gmail.com>
|
|
* @site http://www.kindsoft.net/
|
|
* @licence http://www.kindsoft.net/license.php
|
|
*******************************************************************************/
|
|
|
|
// Baidu Maps: http://dev.baidu.com/wiki/map/index.php?title=%E9%A6%96%E9%A1%B5
|
|
|
|
KindEditor.plugin('baidumap', function (K) {
|
|
var self = this, name = 'baidumap', lang = self.lang(name + '.');
|
|
var mapWidth = K.undef(self.mapWidth, Math.min(document.body.clientWidth - 42, 558));
|
|
var mapHeight = K.undef(self.mapHeight, 360);
|
|
var getParam = function (name, url) {
|
|
url = url || location.href;
|
|
return url.match(new RegExp('[?&]' + name + '=([^?&]+)', 'i')) ? decodeURIComponent(RegExp.$1) : '';
|
|
};
|
|
self.clickToolbar(name, function () {
|
|
if(!self.options.baiduMapKey){
|
|
alert("请在配置中配置百度地图API密钥");
|
|
return false;
|
|
}
|
|
var img = self.plugin.getSelectedImage();
|
|
var src = img && img[0] ? $(img[0]).attr("src") : '';
|
|
var center = getParam("center", src) || self.options.baiduMapCenter || '';
|
|
var markers = getParam("markers", src);
|
|
var html = ['<div class="ke-dialog-content-inner" style="padding-top: 0">',
|
|
'<div class="ke-dialog-row ke-clearfix">',
|
|
'<div class="ke-header">' + lang.address,
|
|
'<input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ',
|
|
'<span>',
|
|
'<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + lang.search + '" style="line-height:22px;padding:0 10px;" />',
|
|
'</span>',
|
|
'<input type="checkbox" id="keInsertDynamicMap" name="insertDynamicMap" class="checkbox" value="1" style="display:inline-block;" /> <label for="keInsertDynamicMap">' + lang.insertDynamicMap + '</label>',
|
|
'</div>',
|
|
'</div>',
|
|
'<div class="ke-map" style="width:' + mapWidth + 'px;height:' + mapHeight + 'px;"></div>',
|
|
'</div>'].join('');
|
|
var dialog = self.createDialog({
|
|
name: name,
|
|
width: mapWidth + 42,
|
|
title: self.lang(name),
|
|
body: html,
|
|
yesBtn: {
|
|
name: self.lang('yes'),
|
|
click: function (e) {
|
|
var map = win.map;
|
|
var centerObj = map.getCenter();
|
|
var overlays = map.getOverlays();
|
|
var markerArr = [];
|
|
var point;
|
|
if (overlays) {
|
|
overlays.forEach(function (item) {
|
|
if (item.point && item.isVisible() && !item.Fb) {
|
|
point = item.point.lng + ',' + item.point.lat;
|
|
if (markerArr.indexOf(point) < 0) {
|
|
markerArr.push(point);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
var markers = markerArr.join("|");
|
|
var center = centerObj.lng + ',' + centerObj.lat;
|
|
var zoom = map.getZoom();
|
|
var url = [checkbox[0].checked ? self.pluginsPath + 'baidumap/index.html' : 'https://api.map.baidu.com/staticimage',
|
|
'?center=' + encodeURIComponent(center),
|
|
'&zoom=' + encodeURIComponent(zoom),
|
|
'&width=' + mapWidth,
|
|
'&height=' + mapHeight,
|
|
'&markers=' + encodeURIComponent(markers),
|
|
'&markerStyles=' + encodeURIComponent('l,A')].join('');
|
|
if (checkbox[0].checked) {
|
|
self.insertHtml('<iframe src="' + url + '" frameborder="0" style="width:' + (mapWidth + 2) + 'px;height:' + (mapHeight + 2) + 'px;"></iframe>');
|
|
} else {
|
|
self.exec('insertimage', url);
|
|
}
|
|
self.hideDialog().focus();
|
|
}
|
|
},
|
|
beforeRemove: function () {
|
|
searchBtn.remove();
|
|
if (doc) {
|
|
doc.write('');
|
|
}
|
|
iframe.remove();
|
|
}
|
|
});
|
|
var div = dialog.div,
|
|
addressBox = K('[name="address"]', div),
|
|
searchBtn = K('[name="searchBtn"]', div),
|
|
checkbox = K('[name="insertDynamicMap"]', dialog.div),
|
|
win, doc;
|
|
var iframe = K('<iframe class="ke-textarea" frameborder="0" src="' + self.pluginsPath + 'baidumap/map.html?center=' + center + '&markers=' + markers + '&key=' + (self.options.baiduMapKey || "") + '" style="width:' + mapWidth + 'px;height:' + mapHeight + 'px;"></iframe>');
|
|
|
|
function ready() {
|
|
win = iframe[0].contentWindow;
|
|
doc = K.iframeDoc(iframe);
|
|
}
|
|
|
|
iframe.bind('load', function () {
|
|
iframe.unbind('load');
|
|
if (K.IE) {
|
|
ready();
|
|
} else {
|
|
setTimeout(ready, 0);
|
|
}
|
|
});
|
|
K('.ke-map', div).replaceWith(iframe);
|
|
searchBtn.click(function () {
|
|
win.search(addressBox.val());
|
|
});
|
|
});
|
|
});
|