+++ /dev/null
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:py="http://genshi.edgewall.org/"
- xmlns:xi="http://www.w3.org/2001/XInclude">
-<xi:include href="master.html" />
-
-<head>
- <title>Map-Tool</title>
- <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAVDRl0qsoeYOspQi0txxVEhTO7xxs0m3ls_NApg8LzilP9E0D3hScAc_5O_qu8-pbIbSF5h8xfGEcjA" type="text/javascript"> </script>
- <script src="${h.url('/yui/yahoo-dom-event/yahoo-dom-event.js')}" type="text/javascript"> </script>
- <script src="${h.url('/yui/connection/connection-min.js')}" type="text/javascript"> </script>
- <script src="${h.url('/yui/json/json-min.js')}" type="text/javascript"> </script>
- <script type="text/javascript">
-// <![CDATA[
-
-// Functions for simulated assoziative array
-// -----------------------------------------
-// key is integer, value is GMarker
-// as described in file:///usr/share/doc/selfhtml/html/javascript/objekte/array.htm
-// aa has to be created with new Object()
-//
-// Remove an element: delete aa[key];
-// Return an element: aa[key]
-
-
-// Appends the value and returns the key
-function aa_get_unused_key(aa) {
- var key = 1;
- for (var k in aa) if (Number(k) >= key) key = Number(k) + 1;
- return key;
-}
-
-// Appends the value and returns the key
-function aa_insert(aa, value) {
- var key = aa_get_unused_key(aa);
- aa[key] = value;
- return key;
-}
-
-// Length of the assoziative array
-function aa_length(aa) {
- var length = 0;
- for (var key in aa) ++length;
- return length;
-}
-
-
-// The map
-// -------
-var wrMap;
-
-
-// Marker Lists
-// ------------
-var wrSleddingMarkers = new Array(); // contains all sledding route markers
-var wrInnMarkers = new Array(); // contains all inn markers
-var wrRefMarkers = new Object(); // contains all reference markers as simulated assoziative array
-
-
-// Accuracy info
-// -------------
-
-function setAccuracyInfo(html) {
- document.getElementById("accuracy").innerHTML = html;
-}
-
-
-function updateAccuracyInfo(wrMap, latlng) {
- var pixel = wrMap.fromLatLngToContainerPixel(latlng);
- var pixel_d = new GPoint(pixel.x - 1, pixel.y + 1)
- var latlng_d = wrMap.fromContainerPixelToLatLng(pixel_d);
- var accuracy = latlng.distanceFrom(latlng_d); // in m
- var accuracy_s = (accuracy > 10) ? accuracy.toFixed(0) : accuracy.toFixed(1);
- setAccuracyInfo("Genauigkeit: 1 Pixel entspricht " + accuracy_s + " Metern");
-}
-
-
-// Position info
-// -------------
-
-function setPositionInfo(html) {
- document.getElementById("mapinfo").innerHTML = html;
-}
-
-
-// The precision digits is optional
-function updatePositionInfo(wrMap, latlng, description, digits) {
- var pixel = wrMap.fromLatLngToContainerPixel(latlng);
- var pixel_d = new GPoint(pixel.x - 1, pixel.y + 1)
- var latlng_d = wrMap.fromContainerPixelToLatLng(pixel_d);
- if (YAHOO.lang.isUndefined(digits)) {
- var fix_lat = Math.ceil(Math.abs(Math.log(latlng.lat() - latlng_d.lat())/Math.LN10))
- var fix_lng = Math.ceil(Math.abs(Math.log(latlng.lng() - latlng_d.lng())/Math.LN10))
- } else {
- var fix_lat = digits;
- var fix_lng = digits;
- }
- var lat_s = latlng.lat().toFixed(fix_lat);
- var lng_s = latlng.lng().toFixed(fix_lng);
- setPositionInfo(description + ": <strong>" + lat_s + " N " + lng_s + " E</strong> (" + lat_s + ", " + lng_s + ")");
-}
-
-
-// Sledding and Inn lists
-// ----------------------
-
-function initSledding(wrMap) {
- // Icon
- var wrSleddingIcon = new GIcon(G_DEFAULT_ICON);
- wrSleddingIcon.image = "${h.url('/gmap_rodelbahn_c.png')}";
- wrSleddingIcon.shadow = "${h.url('/gmap_rodelbahn_c_s.png')}";
- wrSleddingIcon.iconSize = new GSize(17, 17);
- wrSleddingIcon.shadowSize = new GSize(23, 23);
- wrSleddingIcon.iconAnchor = new GPoint(9, 9);
- wrSleddingIcon.infoWindowAnchor = new GPoint(9, 9);
-
- // Add one sledding route
- function addSleddingMarker(latitude, longitude, name) {
- var latlng = new GLatLng(latitude, longitude);
- var marker = new GMarker(latlng, {icon: wrSleddingIcon, title: name});
- function openSleddingInfoWindow() {
- var lat_s = latlng.lat().toFixed(6);
- var lng_s = latlng.lng().toFixed(6);
- marker.openInfoWindowHtml(name + "<br/><strong>" + lat_s + " N " + lng_s + " E</strong><br/>" + lat_s + ", " + lng_s);
- }
- GEvent.addListener(marker, "click", openSleddingInfoWindow);
- wrSleddingMarkers.push(marker);
- wrMap.addOverlay(marker);
- return marker;
- }
-
- // AJAX call
- var callback = {
- success: function(o) {
- sleddings = YAHOO.lang.JSON.parse(o.responseText).sledding;
- for (var i = 0; i < sleddings.length; ++i) addSleddingMarker(sleddings[i][1], sleddings[i][2], sleddings[i][0]);
- },
- failure: function(o) {alert("Konnte die Rodelbahnen-Daten nicht vom Server laden");}
- }
- var url = "${h.url(controller='maptool', action='ajax_sledding')}";
- YAHOO.util.Connect.asyncRequest('GET', url, callback, null);
-}
-
-
-function initInns(wrMap) {
- // Icon
- var wrInnIcon = new GIcon(G_DEFAULT_ICON);
- wrInnIcon.image = "${h.url('/gmapGasthaus.png')}";
-
- // Add one inn
- function addInnMarker(latitude, longitude, name) {
- var latlng = new GLatLng(latitude, longitude);
- var marker = new GMarker(latlng, {icon: wrInnIcon, title: name});
- function openInnInfoWindow() {
- var lat_s = latlng.lat().toFixed(6);
- var lng_s = latlng.lng().toFixed(6);
- marker.openInfoWindowHtml(name + "<br/><strong>" + lat_s + " N " + lng_s + " E</strong><br/>" + lat_s + ", " + lng_s);
- }
- GEvent.addListener(marker, "click", openInnInfoWindow);
- wrInnMarkers.push(marker);
- wrMap.addOverlay(marker);
- return marker;
- }
-
- // AJAX call
- var callback = {
- success: function(o) {
- inns = YAHOO.lang.JSON.parse(o.responseText).inns;
- for (var i = 0; i < inns.length; ++i) addInnMarker(inns[i][1], inns[i][2], inns[i][0]);
- },
- failure: function(o) {alert("Konnte die Hütten-Daten nicht vom Server laden");}
- }
- var url = "${h.url(controller='maptool', action='ajax_inns')}";
- YAHOO.util.Connect.asyncRequest('GET', url, callback, null);
-}
-
-
-function showMarkers(markers, show) {
- for (var i = 0; i != markers.length; ++i)
- if (show) markers[i].show(); else markers[i].hide();
-}
-
-
-function removeRefMarker(refMarkerId) {
- refMarker = wrRefMarkers[refMarkerId];
- wrMap.removeOverlay(refMarker);
- delete refMarker;
- delete wrRefMarkers[refMarkerId];
-}
-
-
-// Done when loading HTML
-// ----------------------
-function initialize() {
- if (GBrowserIsCompatible()) {
- wrMap = new GMap2(document.getElementById('map'), {'mapTypes': [G_NORMAL_MAP, G_HYBRID_MAP, G_PHYSICAL_MAP, G_SATELLITE_MAP]});
- wrMap.addControl(new GLargeMapControl());
- wrMap.addControl(new GMapTypeControl());
- wrMap.addControl(new GScaleControl());
- wrMap.setCenter(new GLatLng(47.22, 11.42), 10);
- // wrMap.enableGoogleBar();
- wrMap.setMapType(G_PHYSICAL_MAP);
- wrMap.enableScrollWheelZoom();
- updateAccuracyInfo(wrMap, wrMap.getCenter());
- updatePositionInfo(wrMap, wrMap.getCenter(), "Zentrum der Karte");
- initSledding(wrMap);
- initInns(wrMap);
-
- // Event at wrMap move
- GEvent.addListener(wrMap, "moveend", function() {updateAccuracyInfo(wrMap, wrMap.getCenter()); updatePositionInfo(wrMap, wrMap.getCenter(), "Zentrum der Karte");});
-
- // Event at wrMap click
- function onMapClick(overlay, latlng) {
- if (YAHOO.lang.isUndefined(latlng)) {
- // setPositionInfo(""); // would override coordinates shown when a user clicks on a marker
- } else {
- updateAccuracyInfo(wrMap, latlng);
- if (overlay == null) {
- // Create refMarker
- var refMarker = new GMarker(latlng, {title: "Koordinaten-Markierung (kann gezogen werden)", draggable: true});
- var refMarkerId = aa_insert(wrRefMarkers, refMarker); // add it to the ref marker assoziative array
- // Event at click on marker
- function onRefMarkerClick() {
- var lat_s = refMarker.getLatLng().lat().toFixed(6);
- var lng_s = refMarker.getLatLng().lng().toFixed(6);
- refMarker.openInfoWindowHtml("Koordinaten<br/><strong>" + lat_s + " N " + lng_s + " E</strong><br/>" + lat_s + ", " + lng_s + "<br/><a onclick=\"removeRefMarker(" + refMarkerId + ")\" href=\"javascript:void(0)\">Marker entfernen</a>");
- updatePositionInfo(wrMap, refMarker.getLatLng(), "Koordinaten des Markers", 6);
- }
- GEvent.addListener(refMarker, "click", onRefMarkerClick);
- // Event at drag marker
- function onRefMarkerDragEnd() {updatePositionInfo(wrMap, refMarker.getLatLng(), "Neue Koordinaten des Markers");}
- GEvent.addListener(refMarker, "dragend", onRefMarkerDragEnd);
- wrMap.addOverlay(refMarker);
- updatePositionInfo(wrMap, latlng, "Koordinaten des neuen Markers");
- } else {
- // Set info text
- updatePositionInfo(wrMap, latlng, "Koordinaten des letzten Klicks");
- }
- }
- }
- GEvent.addListener(wrMap, "click", onMapClick);
-
- // Show markers
- document.getElementById("show_sledding").checked = true;
- document.getElementById("show_inns").checked = true;
- }
-}
-
-// ]]>
- </script>
-</head>
-
-<body onload="initialize()" onunload="GUnload()">
-
-<h2>Map-Tool</h2>
-
-<p>Werkzeug für die Landkartenbearbeitung.</p>
-
-<h3>Georeferenzierung</h3>
-
-<p id="accuracy"/>
-<div id="map" style="width: 100%; height: 450px; border-style:none;"></div>
-<p id="mapinfo"/>
-
-<p>
-<input id="show_sledding" type="checkbox" onclick="showMarkers(wrSleddingMarkers, this.checked);"/><label for="show_sledding">Rodelbahnen zeigen</label><br/>
-<input id="show_inns" type="checkbox" onclick="showMarkers(wrInnMarkers, this.checked);"/><label for="show_inns">Hütten zeigen</label>
-</p>
-
-
-
-</body>
-</html>