149 lines
4.8 KiB
JavaScript
149 lines
4.8 KiB
JavaScript
// ================================================================
|
|
// CHEditor 5
|
|
// ----------------------------------------------------------------
|
|
var oEditor = null,
|
|
centerLat = 0,
|
|
centerLng = 0,
|
|
latlng = 0,
|
|
setZoom = 14,
|
|
marker_lat = 0,
|
|
marker_lng = 0,
|
|
mapType = "roadmap",
|
|
map,
|
|
mapWidth = 512,
|
|
mapHeight = 320,
|
|
panorama,
|
|
panoramaVisible = false,
|
|
marker,
|
|
staticMapsAPI = 'STATIC_MAPS_API_KEY';
|
|
|
|
function doSubmit() {
|
|
var mapImg = document.createElement("img"),
|
|
panoramaPitch, panoramaHeading, panoramaZoom, panoramaPosition;
|
|
|
|
if (marker_lat === 0) {
|
|
marker_lat = centerLat;
|
|
}
|
|
if (marker_lng === 0) {
|
|
marker_lng = centerLng;
|
|
}
|
|
|
|
mapImg.style.width = mapWidth + 'px';
|
|
mapImg.style.height = mapHeight + 'px';
|
|
mapImg.style.border = '1px #000 solid';
|
|
mapImg.setAttribute('alt', 'Google Map');
|
|
mapImg.onload = function () {
|
|
oEditor.insertHtmlPopup(mapImg);
|
|
oEditor.popupWinClose();
|
|
};
|
|
|
|
if (panoramaVisible) {
|
|
panoramaPitch = panorama.getPov().pitch;
|
|
panoramaHeading = panorama.getPov().heading;
|
|
panoramaZoom = panorama.getPov().zoom;
|
|
panoramaPosition = panorama.getPosition();
|
|
mapImg.src = "http://maps.googleapis.com/maps/api/streetview?" +
|
|
"location=" + panoramaPosition.lat() + ',' + panoramaPosition.lng() +
|
|
"&pitch=" + panoramaPitch +
|
|
"&heading=" + panoramaHeading +
|
|
"&size=" + mapWidth + 'x' + mapHeight +
|
|
"&zoom=" + panoramaZoom +
|
|
"&sensor=false" +
|
|
"®ion=KR" +
|
|
"&key=" + staticMapsAPI;
|
|
} else {
|
|
mapImg.src = "http://maps.google.com/maps/api/staticmap?" +
|
|
"center=" + centerLat + ',' + centerLng +
|
|
"&zoom=" + setZoom +
|
|
"&size=" + mapWidth + 'x' + mapHeight +
|
|
"&maptype=" + mapType +
|
|
"&markers=" + marker_lat + ',' + marker_lng +
|
|
"&sensor=false" +
|
|
"&language=ko" +
|
|
"®ion=KR" +
|
|
"&key=" + staticMapsAPI;
|
|
}
|
|
}
|
|
|
|
function searchAddress() {
|
|
var address = document.getElementById('fm_address').value,
|
|
geocoder = new google.maps.Geocoder();
|
|
|
|
geocoder.geocode({'address' : address},
|
|
function (results, status) {
|
|
if (status === google.maps.GeocoderStatus.OK) {
|
|
centerLat = results[0].geometry.location.lat();
|
|
centerLng = results[0].geometry.location.lng();
|
|
latlng = new google.maps.LatLng(centerLat, centerLng);
|
|
map.setCenter(latlng);
|
|
map.setZoom(setZoom);
|
|
marker = new google.maps.Marker({ 'map': map, 'draggable': true, 'position': latlng,
|
|
animation: google.maps.Animation.DROP});
|
|
marker.setMap(map);
|
|
}
|
|
});
|
|
}
|
|
|
|
function initMap(zoom) {
|
|
var mapOptions = {
|
|
zoom: zoom || setZoom,
|
|
panControl: true,
|
|
zoomControl: true,
|
|
scaleControl: true,
|
|
center: new google.maps.LatLng(37.566, 126.977),
|
|
disableDefaultUI: false,
|
|
streetViewControl: true,
|
|
mapTypeId: google.maps.MapTypeId.ROADMAP
|
|
};
|
|
|
|
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
|
|
centerLat = map.getCenter().lat();
|
|
centerLng = map.getCenter().lng();
|
|
|
|
google.maps.event.addListener(map, 'dragend', function () {
|
|
centerLat = map.getCenter().lat();
|
|
centerLng = map.getCenter().lng();
|
|
});
|
|
|
|
google.maps.event.addListener(map, 'maptypeid_changed', function () {
|
|
mapType = map.getMapTypeId();
|
|
});
|
|
|
|
google.maps.event.addListener(map, 'zoom_changed', function () {
|
|
centerLat = map.getCenter().lat();
|
|
centerLng = map.getCenter().lng();
|
|
});
|
|
|
|
panorama = map.getStreetView();
|
|
google.maps.event.addListener(panorama, 'visible_changed', function () {
|
|
panoramaVisible = panorama.getVisible();
|
|
});
|
|
}
|
|
|
|
function popupClose() {
|
|
oEditor.popupWinCancel();
|
|
}
|
|
|
|
function init(dialog) {
|
|
oEditor = this;
|
|
oEditor.dialog = dialog;
|
|
|
|
var dlg = new Dialog(oEditor),
|
|
button = [
|
|
{ alt : "", img : 'submit.gif', cmd : doSubmit },
|
|
{ alt : "", img : 'cancel.gif', cmd : popupClose }
|
|
],
|
|
buttonUrl = oEditor.config.iconPath + 'button/map_address.gif',
|
|
search = new Image();
|
|
|
|
dlg.showButton(button);
|
|
|
|
search.src = buttonUrl;
|
|
search.onclick = function () {
|
|
searchAddress();
|
|
};
|
|
search.className = 'button';
|
|
document.getElementById('map_search').appendChild(search);
|
|
dlg.setDialogHeight();
|
|
}
|