<div id="permalink">
<a href="/" id="permalinkanchor" class="geolink llz layers object"><%= t 'site.index.permalink' %></a><br/>
<a href="/" id="shortlinkanchor"><%= t 'site.index.shortlink' %></a>
- <a href="#" id="reportbuganchor">Report a problem</a>
+ <a href="#" id="createnoteanchor">Report a problem</a>
</div>
</div>
<%= javascript_include_tag '/openlayers/OpenLayers.js' %>
<%= javascript_include_tag '/openlayers/OpenStreetMap.js' %>
-<%= javascript_include_tag 'openstreetbugs.js' %>
<%= javascript_include_tag 'map.js' %>
<%= render :partial => 'resize' %>
map.dataLayer.events.register("visibilitychanged", map.dataLayer, toggleData);
map.addLayer(map.dataLayer);
- map.osbLayer = new OpenLayers.Layer.OpenStreetBugs("Notes", {
- serverURL: "/api/0.6/",
- iconOpen: new OpenLayers.Icon("<%= image_path "open_note_marker.png" %>", new OpenLayers.Size(22, 22), new OpenLayers.Pixel(-11, -11)),
- iconClosed: new OpenLayers.Icon("<%= image_path "closed_noe_marker.png" %>", new OpenLayers.Size(22, 22), new OpenLayers.Pixel(-11, -11)),
- readonly: false,
- setCookie: false,
- permalinkURL: "http://www.openstreetmap.org/",
- theme: "<%= stylesheet_path "openstreetbugs" %>",
- visibility: <%= params[:notes] == "yes" %>
+ map.noteLayer = new OpenLayers.Layer.Vector("Notes", {
+ visibility: false,
+ projection: new OpenLayers.Projection("EPSG:4326"),
+ styleMap: new OpenLayers.StyleMap(new OpenLayers.Style({
+ graphicWidth: 22,
+ graphicHeight: 22,
+ graphicOpacity: 0.7,
+ graphicXOffset: -11,
+ graphicYOffset: -11
+ }, {
+ rules: [
+ new OpenLayers.Rule({
+ filter: new OpenLayers.Filter.Comparison({
+ type: OpenLayers.Filter.Comparison.EQUAL_TO,
+ property: "status",
+ value: "open"
+ }),
+ symbolizer: {
+ externalGraphic: "<%= image_path 'open_note_marker.png' %>"
+ }
+ }),
+ new OpenLayers.Rule({
+ filter: new OpenLayers.Filter.Comparison({
+ type: OpenLayers.Filter.Comparison.EQUAL_TO,
+ property: "status",
+ value: "closed"
+ }),
+ symbolizer: {
+ externalGraphic: "<%= image_path 'closed_note_marker.png' %>"
+ }
+ })
+ ]
+ })),
+ strategies: [
+ new OpenLayers.Strategy.BBOX()
+ ],
+ protocol: new OpenLayers.Protocol.HTTP({
+ url: "<%= url_for :controller => :note, :action => :list, :format => :json %>",
+ format: new OpenLayers.Format.GeoJSON(),
+ callback: noteCallback
+ })
});
- map.addLayer(map.osbLayer);
+ map.noteLayer.events.register("featureselected", map, noteSelected);
+ map.noteLayer.events.register("featureunselected", map, noteUnselected);
+ map.addLayer(map.noteLayer);
- map.osbControl = new OpenLayers.Control.OpenStreetBugs(map.osbLayer);
- map.addControl(map.osbControl);
+ var noteControl = new OpenLayers.Control.SelectFeature(map.noteLayer, {
+ autoActivate: true
+ });
+ map.addControl(noteControl);
+
+ <% if params[:notes] == "yes" -%>
+ map.noteLayer.setVisibility(true);
+ <% end -%>
- $("reportbuganchor").observe("click", addBug);
+ $("createnoteanchor").observe("click", addNote);
- map.events.register("zoomend", map, allowBugReports);
+ map.events.register("zoomend", map, allowNoteReports);
<% end %>
<% unless object_zoom %>
<% end %>
}
- function addBug() {
- map.osbControl.activate();
- map.osbControl.addTemporaryMarker(map.getCenter());
+ function noteCallback(scope, response) {
+ for (var f = 0; f < response.features.length; f++) {
+ var feature = response.features[f];
+ }
+ }
+
+ function noteSelected(o) {
+ var feature = o.feature;
+ var location = feature.geometry.getBounds().getCenterLonLat();
+
+ feature.popup = new OpenLayers.Popup.FramedCloud(feature.attributes.id,
+ location, null,
+ "<p>" + feature.attributes.id + "</p>",
+ null, true);
+
+ map.addPopup(feature.popup);
+// feature.popup.show();
+ }
+
+ function noteUnselected(o) {
+ var feature = o.feature;
+
+ map.removePopup(feature.popup);
+ delete feature.popup;
+ }
+
+ function addNote() {
+ map.noteLayer.setVisibility(true);
+ map.noteLayer.addNote(map.getCenter());
}
- function allowBugReports() {
+ function allowNoteReports() {
if (map.getZoom() > 11) {
- $("reportbuganchor").style.visibility = "visible";
+ $("createnoteanchor").style.visibility = "visible";
} else {
- $("reportbuganchor").style.visibility = "hidden";
+ $("createnoteanchor").style.visibility = "hidden";
}
}