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()); | ||
|  | 		}); | ||
|  | 	}); | ||
|  | }); |