94 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			3.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, 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());
 | |
| 		});
 | |
| 	});
 | |
| });
 |