var vectors;
var box;
+var transform;
var markerLayer;
var markerControl;
box.handler.callbacks.done = endDrag;
map.addControl(box);
+ transform = new OpenLayers.Control.TransformFeature(vectors, {
+ rotate: false,
+ irregular: true
+ });
+ transform.events.register("transformcomplete", transform, transformComplete);
+ map.addControl(transform);
+
map.events.register("moveend", map, mapMoved);
map.events.register("changebaselayer", map, htmlUrlChanged);
$("#format_osm").click(formatChanged);
$("#format_mapnik").click(formatChanged);
- $("#format_osmarender").click(formatChanged);
$("#format_html").click(formatChanged);
$("#mapnik_scale").change(mapnikSizeChanged);
if (map.baseLayer.name == "Mapnik") {
$("#format_mapnik").prop("checked", true);
- } else if (map.baseLayer.name == "Osmarender") {
- $("#format_osmarender").prop("checked", true);
}
formatChanged();
$("#drag_box").html("<%=j t 'export.start_rjs.manually_select' %>");
}
+function transformComplete(event) {
+ setBounds(event.feature.geometry.bounds);
+ validateControls();
+}
+
function startMarker() {
$("#add_marker").html("<%=j t 'export.start_rjs.click_add_marker' %>");
markerLayer = new OpenLayers.Layer.Vector("",{
displayInLayerSwitcher: false,
style: {
- externalGraphic: OpenLayers.Util.getImagesLocation() + "marker.png",
+ externalGraphic: OpenLayers.Util.getImageLocation("marker.png"),
graphicXOffset: -10.5,
graphicYOffset: -25,
graphicWidth: 21,
}
function clearBox() {
+ transform.deactivate();
vectors.destroyFeatures();
}
var feature = new OpenLayers.Feature.Vector(bounds.toGeometry());
vectors.addFeatures(feature);
+ transform.setFeature(feature);
}
function validateControls() {
}
var max_scale = maxMapnikScale();
+ var disabled = true;
- if ($("#format_osm").prop("checked") && bounds.getWidth() * bounds.getHeight() > <%= MAX_REQUEST_AREA %>) {
- $("#export_commit").prop("disabled", true);
- } else if ($("#format_mapnik").prop("checked") && $("#mapnik_scale").val() < max_scale) {
- $("#export_commit").prop("disabled", true);
- } else {
- $("#export_commit").prop("disabled", false);
+ if ($("#format_osm").prop("checked")) {
+ disabled = bounds.getWidth() * bounds.getHeight() > <%= MAX_REQUEST_AREA %>;
+ } else if ($("#format_mapnik").prop("checked")) {
+ disabled = $("#mapnik_scale").val() < max_scale;
}
+ $("#export_commit").prop("disabled", disabled);
$("#mapnik_max_scale").html(roundScale(max_scale));
-
- var max_zoom = maxOsmarenderZoom();
-
- $("#osmarender_zoom option").each(function () {
- if ($(this).val() > max_zoom) {
- $(this).prop("disabled", true);
- } else {
- $(this).prop("disabled", false);
- }
- });
-
- if ($("#osmarender_zoom option").is(":disabled:selected")) {
- $("#osmarender_zoom option").filter(":enabled").last().prop("selected", true);
- }
}
function htmlUrlChanged() {
$("#export_mapnik").hide();
}
- if ($("#format_osmarender").prop("checked")) {
- var zoom = Math.min(map.getZoom(), maxOsmarenderZoom());
-
- $("#osmarender_zoom option[value=" + zoom + "]").prop("selected", true);
- $("#export_osmarender").show();
- } else {
- $("#export_osmarender").hide();
- }
-
if ($("#format_html").prop("checked")) {
$("#export_html").show();
$("#export_commit").hide();
Math.round(bounds.getHeight() / scale / 0.00028));
}
-function maxOsmarenderZoom() {
- var bounds = new OpenLayers.Bounds($("#minlon").val(), $("#minlat").val(), $("#maxlon").val(), $("#maxlat").val());
- var xzoom = Math.LOG2E * Math.log(2000 * 1.40625 / bounds.getWidth());
- var ymin = bounds.bottom * Math.PI / 180;
- var ymax = bounds.top * Math.PI / 180;
- var yzoom = Math.LOG2E * (Math.log(2000 * 2 * Math.PI) - Math.log(Math.log((Math.tan(ymax) + 1 / Math.cos(ymax)) / (Math.tan(ymin) + 1 / Math.cos(ymin)))))
-
- return Math.min(Math.floor(Math.min(xzoom, yzoom)), 17);
-}
-
function roundScale(scale) {
var precision = 5 * Math.pow(10, Math.floor(Math.LOG10E * Math.log(scale)) - 2);