| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 | /******************************************************************************** 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*******************************************************************************/// Google Maps: http://code.google.com/apis/maps/index.htmlKindEditor.plugin('map', function(K) {	var self = this, name = 'map', lang = self.lang(name + '.');	self.clickToolbar(name, function() {		var html = ['<div style="padding:10px 20px;">',			'<div class="ke-dialog-row">',			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>',			'<div class="ke-map" style="width:558px;height:360px;"></div>',			'</div>'].join('');		var dialog = self.createDialog({			name : name,			width : 600,			title : self.lang(name),			body : html,			yesBtn : {				name : self.lang('yes'),				click : function(e) {					var geocoder = win.geocoder,						map = win.map,						center = map.getCenter().lat() + ',' + map.getCenter().lng(),						zoom = map.getZoom(),						maptype = map.getMapTypeId(),						url = 'http://maps.googleapis.com/maps/api/staticmap';						url += '?center=' + encodeURIComponent(center);						url += '&zoom=' + encodeURIComponent(zoom);						url += '&size=558x360';						url += '&maptype=' + encodeURIComponent(maptype);						url += '&markers=' + encodeURIComponent(center);						url += '&language=' + self.langType;						url += '&sensor=false';					self.exec('insertimage', url).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),			win, doc;		var iframeHtml = ['<!doctype html><html><head>',			'<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />',			'<style>',			'	html { height: 100% }',			'	body { height: 100%; margin: 0; padding: 0; background-color: #FFF }',			'	#map_canvas { height: 100% }',			'</style>',			'<script src="http://maps.googleapis.com/maps/api/js?sensor=false&language=' + self.langType + '"></script>',			'<script>',			'var map, geocoder;',			'function initialize() {',			'	var latlng = new google.maps.LatLng(31.230393, 121.473704);',			'	var options = {',			'		zoom: 11,',			'		center: latlng,',			'		disableDefaultUI: true,',			'		panControl: true,',			'		zoomControl: true,',			'		mapTypeControl: true,',			'		scaleControl: true,',			'		streetViewControl: false,',			'		overviewMapControl: true,',			'		mapTypeId: google.maps.MapTypeId.ROADMAP',			'	};',			'	map = new google.maps.Map(document.getElementById("map_canvas"), options);',			'	geocoder = new google.maps.Geocoder();',			'	geocoder.geocode({latLng: latlng}, function(results, status) {',			'		if (status == google.maps.GeocoderStatus.OK) {',			'			if (results[3]) {',			'				parent.document.getElementById("kindeditor_plugin_map_address").value = results[3].formatted_address;',			'			}',			'		}',			'	});',			'}',			'function search(address) {',			'	if (!map) return;',			'	geocoder.geocode({address : address}, function(results, status) {',			'		if (status == google.maps.GeocoderStatus.OK) {',			'			map.setZoom(11);',			'			map.setCenter(results[0].geometry.location);',			'			var marker = new google.maps.Marker({',			'				map: map,',			'				position: results[0].geometry.location',			'			});',			'		} else {',			'			alert("Invalid address: " + address);',			'		}',			'	});',			'}',			'</script>',			'</head>',			'<body onload="initialize();">',			'<div id="map_canvas" style="width:100%; height:100%"></div>',			'</body></html>'].join('\n');		// TODO:用doc.write(iframeHtml)方式加载时,在IE6上第一次加载报错,暂时使用src方式		var iframe = K('<iframe class="ke-textarea" frameborder="0" src="' + self.pluginsPath + 'map/map.html" style="width:558px;height:360px;"></iframe>');		function ready() {			win = iframe[0].contentWindow;			doc = K.iframeDoc(iframe);			//doc.open();			//doc.write(iframeHtml);			//doc.close();		}		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());		});	});});
 |