Not yet.
Source:http://openstreetmap.us/2013/04/openstreetmap-in-government
Use tags as key = value
to define map features
OpenLayers Plugin | Uses Google, Bing, Yahoo or OpenStreetMap as a background |
Table Manager | Manages the attribute table structure |
MMQGIS | Additional tools, like geocoding, geometry conversion, buffering, hub analysis, color ramps, simple automation, etc. |
Profile Tool | Plots terrain profiles |
CADTools | Tools to perform CAD-like functions in QGIS |
<!DOCTYPE html> <html> <head> <title> Leaflet Demo </title> </head> <body> </body> </html>
<head> <title> Leaflet Demo </title> <link rel= "stylesheet" href="//cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" /> </head>
<body> <script src="//cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script> </body>
<body> <div id="map"></div> <script src="//cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script> </body>
<head> <title> Leaflet Demo </title> <style> body, html { height: 100%; } #map { width: 100%; height: 100%; } </style> </head>
<body> <div id="map"></div> <script src="//cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script> <script> </script> </body>
var map = L.map('map').setView([39.75, -105], 15);
L.tileLayer('https://{s}.tiles.mapbox.com/v3/{id}/{z}/{x}/{y}.png', { maxZoom: 18, attribution: "OpenStreetMap, Mapbox, and NPS", id: 'nps.k7chg4fe' }).addTo(map);
var marker = L.marker([39.75, -105]).addTo(map);
<body> <div id="map"></div> <style src="//cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script> <style src="//cdnjs.cloudflare.com/ajax/libs/reqwest/1.1.5/reqwest.min.js" ></script> <script> ... </script> </body>
var geojsonLink = 'https://npmap-demo-account.cartodb.com/api/v1/sql?q=select+*+from+restaurants_modified&format=geojson';
reqwest(geojsonLink, function(result) { L.geoJson(result).addTo(map); });
reqwest(geojsonLink, function(result) { L.geoJson(result, { pointToLayer: function(feature, latlng) { return L.circleMarker(latlng); } }).addTo(map); });
reqwest(geojsonLink, function(result) { L.geoJson(result, { pointToLayer: function(feature, latlng) { return L.circleMarker(latlng, { color: 'white', fillOpacity: 1, radius: 6 }); } }).addTo(map); });
var colors = { 'Bar': '#8e44ad', 'Cafe': '#e74c3c', 'Pub ': '#16a085', 'Restaurant': '#f1c40f' };
reqwest(geojsonLink, function(result) { L.geoJson(result, { pointToLayer: function(feature, latlng) { return L.circleMarker(latlng, { color: 'white', fillColor: colors[feature.properties.amenity], fillOpacity: 1, radius: 6 }); } }).addTo(map); });
<body> <div id="map"></div> <script src="//cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/reqwest/1.1.5/reqwest.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.min.js"></script> <script> ... </script> </body>
var popupContent = function ( properties ) { var content = '<div class="popup">' + '<span class="title">{{name}}</span><br/>' + '{{address}}<br/>' + '<hr/>' + '<span class="title">Amenity</span>: {{amenity}}<br/>' + '<span class="title">Cuisine</span>: {{cuisine}}<br/>' + '<span class="title">Rating</span>: {{rating}}' + '</div>'; return Handlebars .compile(content)(properties); };
reqwest(geojsonLink, function(result) { L. geoJson(result, { pointToLayer: function(feature, latlng) { return L.circleMarker(latlng, { color: 'white' , fillColor: colors[feature .properties . amenity], fillOpacity: 1, radius: 6 });}, onEachFeature: function (feature, layer) { return layer .bindPopup( popupContent(feature . properties)); } }).addTo(map); });
<head> <title> Leaflet Demo </title> <link rel= "stylesheet" href= "//cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" /> <link rel="stylesheet" href= "//leaflet.github.io/Leaflet.draw/leaflet.draw.js" /> </head>
<body> <div id="map"></div> <script src="//cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/reqwest/1.1.5/reqwest.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.min.js"></script> <script src="//leaflet.github.io/Leaflet.draw/leaflet.draw.js"></script> <script> ... </script> </body>
var drawnItems = new L.FeatureGroup(); map.addLayer(drawnItems); var drawControl = new L.Control.Draw({ draw: { position: 'topleft' , polygon: { title:!!! 5 %html{lang: 'en', class: 'no-js'} %head %title Fulcrum Report %meta{content: 'recurse=no', name: 'fulcrum-report-settings'} :sass @font-face font-family: 'Open Sans' font-style: normal font-weight: 400 src: local('Open Sans'), local('OpenSans'), url(file://#{::File.join(::Rails.root, 'db', 'default_report_font.ttf')}) format('truetype') $font-size: 16px $font-size-title: 22px $line-color: #cbcbcb html, body font-family: 'Open Sans', sans-serif padding: 0 margin: 0 box-sizing: border-box body width: 1050px font-size: $font-size h1, h2, h3, h4, h5, h6 margin: 0 padding: 0 .field padding: 4px 0 border-bottom: 1px solid $line-color page-break-inside: avoid .field-label font-weight: bold float: left width: 380px padding-right: 20px text-align: left font-size: $font-size .field-label-full font-weight: normal float: left width: 1050px text-align: left margin: 0 font-size: $font-size .field-value font-weight: normal float: left width: 650px font-size: $font-size .photo max-width: 650px max-height: 650px margin-top: 6px .signature max-width: 650px max-height: 650px margin-top: 6px .status-color float: left width: 20px height: 20px border-radius: 2px margin-right: 8px position: relative top: 0px .field-section float: left width: 1050px font-weight: normal font-size: $font-size-title border-bottom: 1px solid $line-color margin-top: 20px &.metadata margin-top: 0 .field-clear height: 0 clear: both .break-line page-break-before: always .center margin-left: 27% #title margin-left: 32% #title2 margin-left: 36% .project font-weight: bold %body .root - if data.is_root %img.center{src: 'https://fulcrum-reports.s3.amazonaws.com/kennel_club/logo.jpg'} %h2#title ASSURED BREEDER ASSESSMENT %h1.field-section.metadata= data.record.title(data.record.form) .field-clear - if data.record.project .field .field-label Project .field-value.project= data.record.project.name .field-clear - if created = data.record.client_created_at || data.record.created_at .field .field-label Created .field-value #{created.in_time_zone((data.record.updated_by || data.record.created_by).time_zone).strftime('%F %T %Z')} by #{data.record.created_by.try(:display_name)} .field-clear - if updated = data.record.client_updated_at || data.record.updated_at .field .field-label Updated .field-value #{updated.in_time_zone((data.record.updated_by || data.record.created_by).time_zone).strftime('%F %T %Z')} by #{(data.record.updated_by || data.record.created_by).try(:display_name)} .field-clear .field .field-label Location .field-value #{data.record.latitude}, #{data.record.longitude} .field-clear - if data.form.status_field['enabled'] .field .field-label= data.form.status_field['label'] - if value = value_for_status_field .field-value .status-color{style: "background-color: #{value['color']}"} .status-value= value['label'] .field-clear - else .field-section= label_for_repeatable_item(data.element, data.value) .field-clear - render_elements(data.elements, data.form_values) do |element, values| - if element.type == 'Section' %p.break-line %h1.field-section= element.label .field-clear - elsif element.type == 'Repeatable' %h1.field-section= label_for_repeatable_item(element, values) .field-clear - elsif element.type == 'PhotoField' - if (photos = (values[element.key] || [])).any? .field %h2.field-label= element.label .field-value - photos.each do |photo| %img.photo{src: Photo.where(access_key: photo['photo_id']).first.file.large.to_s} - if photo['caption'].present? %p= photo['caption'] .field-clear - elsif element.type == 'SignatureField' - if signature = values[element.key] .field %h2.field-label= element.label .field-value - signature_record = Signature.where(access_key: signature['signature_id']).first %img.signature{src: signature_record.file.large.to_s} - if signature['timestamp'].present? %p Signed #{SignatureUtils.format_timestamp(signature, signature_record)} .field-clear - elsif %w(ChoiceField ClassificationField DateTimeField TextField AddressField YesNoField TimeField BarcodeField CalculatedField).include?(element.type) - if value = value_for_element(element, values) .field %h2.field-label= element.label .field-value= value .field-clear - elsif %w(VideoField AudioField).include?(element.type) - elsif element.type == 'Label' - if %w(9e95 9851 12b7 c50d dd2f 4344 aac8 9fcb 8fa4 2085 a5fc).include?(element.key) .field .field-label-full= element.label .field-clear - else .field %h2.field-label= element.label .field-value= values[element.key] || 'N/A' .field-clear - improvements = element_by_data_name('assured_breeder_scheme_improvement_notice') %p.break-line %img.center{src: 'https://fulcrum-reports.s3.amazonaws.com/kennel_club/logo.jpg'} %h2#title2 IMPROVEMENT NOTICE - visible_improvements = improvements.elements.select do |element| - if element.visible_conditions.any? - visible_condition = element.visible_conditions.first - element_for_value = element_by_key(visible_condition.field_key) - actual_value = value_for(element_for_value.data_name, data.form_values) - expected_value = visible_condition.value - expected_value == actual_value - visible_improvements.each_with_index do |element, i| .field#{i+1}) #{element.label}
.field-clearspan> 'Draw a sexy polygon!', allowIntersection: false, drawError: { color: '#b00b00', timeout: 1000 }, shapeOptions: { color: '#bada55' }, showArea: true }, polyline: { metric: false }, circle: { shapeOptions: { color: '#662d91' } } }, edit: { featureGroup: drawnItems } }); map.addControl(drawControl); map.on('draw:created', function (e) { var type = e.layerType, layer = e.layer; if (type === 'marker' ) { layer.bindPopup('A popup!'); } drawnItems.addLayer(layer); });