2024-10-10
This commit is contained in:
57
web/kindeditor/plugins/map/map.html
Normal file
57
web/kindeditor/plugins/map/map.html
Normal file
@@ -0,0 +1,57 @@
|
||||
<!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=zh_CN"></script>
|
||||
<script>
|
||||
var map, geocoder;
|
||||
function initialize() {
|
||||
var latlng = new google.maps.LatLng(-34.397, 150.644);
|
||||
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>
|
||||
137
web/kindeditor/plugins/map/map.js
Normal file
137
web/kindeditor/plugins/map/map.js
Normal file
@@ -0,0 +1,137 @@
|
||||
/*******************************************************************************
|
||||
* 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.html
|
||||
|
||||
KindEditor.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());
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user