gluon-config-mode-geo-location: add js for map
This commit is contained in:
parent
4883bc7141
commit
c4329ab1c5
6
package/gluon-config-mode-geo-location/jssrc/build.js
Normal file
6
package/gluon-config-mode-geo-location/jssrc/build.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
({
|
||||||
|
baseUrl: "src",
|
||||||
|
include: "osm.js",
|
||||||
|
optimize: "uglify2",
|
||||||
|
out: "osm.js",
|
||||||
|
})
|
70
package/gluon-config-mode-geo-location/jssrc/src/osm.js
Normal file
70
package/gluon-config-mode-geo-location/jssrc/src/osm.js
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
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 = 12,
|
||||||
|
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, "");
|
||||||
|
//Anyone knows how to trigger the change event?
|
||||||
|
//oLon.onChange()
|
||||||
|
//oLat.onChange()
|
||||||
|
}
|
||||||
|
}), 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)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user