123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- var map;
- var layer_mapnik;
- var layer_tah;
- var layer_markers;
- var PI = Math.PI;
- var latfield = '';
- var lonfield = '';
- var latfield_id='';
- var lonfield_id='';
- var centerlon = 10;
- var centerlat = 52;
- var zoom = 6;
- function lon2merc(lon) {
- return 20037508.34 * lon / 180;
- }
- function lat2merc(lat) {
- lat = Math.log(Math.tan( (90 + lat) * PI / 360)) / PI;
- return 20037508.34 * lat;
- }
- function merc2lon(lon) {
- return lon*180/20037508.34;
- };
- function merc2lat(lat) {
- return Math.atan(Math.exp(lat*PI/20037508.34))*360/PI-90;
- };
- OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {
- defaultHandlerOptions: {
- 'single': true,
- 'double': false,
- 'pixelTolerance': 0,
- 'stopSingle': false,
- 'stopDouble': false
- },
- initialize: function(options) {
- this.handlerOptions = OpenLayers.Util.extend(
- {}, this.defaultHandlerOptions
- );
- OpenLayers.Control.prototype.initialize.apply(
- this, arguments
- );
- this.handler = new OpenLayers.Handler.Click(
- this, {
- 'click': this.trigger
- }, this.handlerOptions
- );
- },
- trigger: function(e) {
- var lonlat = map.getLonLatFromViewPortPx(e.xy);
- lat=merc2lat(lonlat.lat);
- lon=merc2lon(lonlat.lon);
- if(parent.document.getElementById(latfield_id)==null){
- latfield=document.getElementById('osmlat');
- }else{
- latfield=parent.document.getElementById(latfield_id);
- }
- if(parent.document.getElementById(lonfield_id)==null){
- lonfield=document.getElementById('osmlon');
- }else{
- lonfield=parent.document.getElementById(lonfield_id);
- }
- latfield.value = lat;
- lonfield.value = lon;
- }
- });
- function init(){
- var field = window.name.substring(0, window.name.lastIndexOf("."));
- if(parent.document.getElementById(field+".latfield")!=null){
- latfield_id = parent.document.getElementById(field+".latfield").value;
- document.getElementById('osm').style.display="none";
- }
- if(parent.document.getElementById(field+".lonfield")!=null){
- lonfield_id = parent.document.getElementById(field+".lonfield").value;
- }
- if(parent.document.getElementById(field+".centerlat")!=null){
- centerlat =parseFloat(parent.document.getElementById(field+".centerlat").value);
- }
- if(parent.document.getElementById(field+".centerlon")!=null){
- centerlon = parseFloat(parent.document.getElementById(field+".centerlon").value);
- }
- if(parent.document.getElementById(field+".zoom")!=null){
- zoom = parseFloat(parent.document.getElementById(field+".zoom").value);
- }
- }
- function drawmap() {
- OpenLayers.Lang.setCode('de');
- mapdiv=document.getElementById('map');
- mapdiv.style.height=window.innerHeight+"px";
- mapdiv.style.width=window.innerWidth+"px";
- map = new OpenLayers.Map('map', {
- projection: new OpenLayers.Projection("EPSG:900913"),
- displayProjection: new OpenLayers.Projection("EPSG:4326"),
- controls: [
- new OpenLayers.Control.Navigation(),
- new OpenLayers.Control.PanZoomBar()],
- maxExtent:
- new OpenLayers.Bounds(-20037508.34,-20037508.34, 20037508.34, 20037508.34),
- numZoomLevels: 18,
- maxResolution: 156543,
- units: 'meters'
- });
- layer_mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
- map.addLayers([layer_mapnik]);
- var y =lat2merc(centerlat);
- var x =lon2merc(centerlon);
- map.setCenter(new OpenLayers.LonLat(x, y), zoom);
-
- // Check for geolocation support
- if(navigator.geolocation){
- navigator.geolocation.getCurrentPosition(function(position){
- var y =lat2merc(position.coords.latitude);
- var x =lon2merc(position.coords.longitude);
- map.setCenter(new OpenLayers.LonLat(x, y), '17');
- });
- }
- var click = new OpenLayers.Control.Click();
- map.addControl(click);
- click.activate();
- }
|