diff --git a/package/gluon-web-osm/Makefile b/package/gluon-web-osm/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..a59f7f9f47a1a673f8a73321295a8e8ed86346ee --- /dev/null +++ b/package/gluon-web-osm/Makefile @@ -0,0 +1,12 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=gluon-web-osm +PKG_VERSION:=1 + +include ../gluon.mk + +define Package/gluon-web-osm + TITLE:=base src for OSM inlay +endef + +$(eval $(call BuildPackageGluon,gluon-web-osm)) diff --git a/package/gluon-web-osm/files/lib/gluon/web/www/static/osm.js b/package/gluon-web-osm/files/lib/gluon/web/www/static/osm.js new file mode 100644 index 0000000000000000000000000000000000000000..6ea2ea0e6d89855da8a305480d2ea3fded55becb --- /dev/null +++ b/package/gluon-web-osm/files/lib/gluon/web/www/static/osm.js @@ -0,0 +1 @@ +function findObj(e){for(list=document.getElementsByClassName("gluon-input-text"),i=0;i<list.length;i++)if(item=list.item(i),0<=item.id.indexOf(e))return item;return!1}function showMap(){if("object"==typeof OpenLayers&&!1!==findObj("longitude")){document.getElementById("locationPickerMap").style.display="block";var a=new OpenLayers.Projection("EPSG:4326"),o=new OpenLayers.Projection("EPSG:900913"),e=zoom,t=new OpenLayers.Layer.Markers("Markers");OpenLayers.Control.Click=OpenLayers.Class(OpenLayers.Control,{defaultHandlerOptions:{single:!0,double:!1,pixelTolerance:0,stopSingle:!1,stopDouble:!1},initialize:function(){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 n=osmMap.getLonLatFromPixel(e.xy);oLon=findObj("longitude"),oLat=findObj("latitude"),lonlat1=new OpenLayers.LonLat(n.lon,n.lat).transform(o,a),oLon.value=lonlat1.lon,oLat.value=lonlat1.lat,t.clearMarkers(),t.addMarker(new OpenLayers.Marker(n)),oLon.className=oLon.className.replace(/ gluon-input-invalid/g,""),oLat.className=oLat.className.replace(/ gluon-input-invalid/g,"")}}),osmMap=new OpenLayers.Map("locationPickerMap",{controls:[new OpenLayers.Control.Navigation,new OpenLayers.Control.PanZoomBar,new OpenLayers.Control.MousePosition],maxExtent:new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),numZoomLevels:18,maxResolution:156543,units:"m",projection:o,displayProjection:a});var n=new OpenLayers.Layer.OSM("OpenStreetMap");osmMap.addLayer(n),osmMap.addLayer(t);var r=longitude,i=latitude;oLon=findObj("longitude"),oLat=findObj("latitude"),""!=oLon.value&&(r=oLon.value),""!=oLat.value&&(i=oLat.value),t.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(r,i).transform(a,o)));var l=new OpenLayers.LonLat(r,i).transform(a,o);osmMap.setCenter(l,e);var s=new OpenLayers.Control.Click;osmMap.addControl(s),s.activate()}else setTimeout(showMap,1e3)} \ No newline at end of file diff --git a/package/gluon-web-osm/javascript/osm.js b/package/gluon-web-osm/javascript/osm.js new file mode 100644 index 0000000000000000000000000000000000000000..3aad1f62796745fad92018a25e7cbb982f39b1d5 --- /dev/null +++ b/package/gluon-web-osm/javascript/osm.js @@ -0,0 +1,72 @@ +/* + Build using: + + uglifyjs javascript/osm.js -o files/lib/gluon/web/www/static/osm.js -c -m +*/ + +function findObj(name) { + list = document.getElementsByClassName("gluon-input-text"); + for(i = 0; i < list.length; i++) { + item = list.item(i); + if(item.id.indexOf(name) >= 0) return item; + } + return false; +} + +function showMap() { + if ("object" == typeof OpenLayers && false !== findObj("longitude")) { + document.getElementById("locationPickerMap").style.display = "block"; + var e = new OpenLayers.Projection("EPSG:4326"), + a = new OpenLayers.Projection("EPSG:900913"), + t = zoom, + n = new OpenLayers.Layer.Markers("Markers"); + OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { + defaultHandlerOptions: { + single: !0, + "double": !1, + pixelTolerance: 0, + stopSingle: !1, + stopDouble: !1 + }, + initialize: function() { + 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(t) { + var i = osmMap.getLonLatFromPixel(t.xy); + oLon = findObj("longitude"); + oLat = findObj("latitude"); + lonlat1 = new OpenLayers.LonLat(i.lon, i.lat).transform(a, e), + oLon.value = lonlat1.lon, + oLat.value = lonlat1.lat, + n.clearMarkers(), + n.addMarker(new OpenLayers.Marker(i)), + oLon.className = oLon.className.replace(/ gluon-input-invalid/g, ""), + oLat.className = oLat.className.replace(/ gluon-input-invalid/g, ""); + } + }), osmMap = new OpenLayers.Map("locationPickerMap", { + controls: [new OpenLayers.Control.Navigation, new OpenLayers.Control.PanZoomBar, new OpenLayers.Control.MousePosition], + maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34), + numZoomLevels: 18, + maxResolution: 156543, + units: "m", + projection: a, + displayProjection: e + }); + var i = new OpenLayers.Layer.OSM("OpenStreetMap"); + osmMap.addLayer(i), osmMap.addLayer(n); + var o = longitude, + r = latitude; + oLon = findObj("longitude"); + oLat = findObj("latitude"); + "" != oLon.value && (o = oLon.value), + "" != oLat.value && (r = oLat.value), + n.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(o, r).transform(e, a))); + var l = new OpenLayers.LonLat(o, r), + d = l.transform(e, a); + osmMap.setCenter(d, t); + var s = new OpenLayers.Control.Click; + osmMap.addControl(s), s.activate() + } else setTimeout(showMap, 1e3) +}