You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
4.1 KiB
95 lines
4.1 KiB
/*******************************************************************************
|
|
* 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, 558);
|
|
var mapHeight = K.undef(self.mapHeight, 360);
|
|
self.clickToolbar(name, function () {
|
|
var html = ['<div style="padding:10px 20px;">',
|
|
'<div class="ke-header">',
|
|
// left start
|
|
'<div class="ke-left">',
|
|
lang.address + ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ',
|
|
'<span class="ke-button-common ke-button-outer">',
|
|
'<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + lang.search + '" />',
|
|
'</span>',
|
|
'</div>',
|
|
// right start
|
|
'<div class="ke-right">',
|
|
'<input type="checkbox" id="keInsertDynamicMap" name="insertDynamicMap" value="1" /> <label for="keInsertDynamicMap">' + lang.insertDynamicMap + '</label>',
|
|
'</div>',
|
|
'<div class="ke-clearfix"></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 center = centerObj.lng + ',' + centerObj.lat;
|
|
var zoom = map.getZoom();
|
|
var url = [checkbox[0].checked ? self.pluginsPath + 'baidumap/index.html' : 'http://api.map.baidu.com/staticimage',
|
|
'?center=' + encodeURIComponent(center),
|
|
'&zoom=' + encodeURIComponent(zoom),
|
|
'&width=' + mapWidth,
|
|
'&height=' + mapHeight,
|
|
'&markers=' + encodeURIComponent(center),
|
|
'&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" 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);
|
|
// search map
|
|
searchBtn.click(function () {
|
|
win.search(addressBox.val());
|
|
});
|
|
});
|
|
});
|
|
|