UNPKG

2.11 kBJavaScriptView Raw
1goog.require('ol.Map');
2goog.require('ol.View');
3goog.require('ol.format.GeoJSON');
4goog.require('ol.layer.Image');
5goog.require('ol.layer.Tile');
6goog.require('ol.layer.Vector');
7goog.require('ol.source.ImageVector');
8goog.require('ol.source.OSM');
9goog.require('ol.source.Vector');
10goog.require('ol.style.Fill');
11goog.require('ol.style.Stroke');
12goog.require('ol.style.Style');
13
14
15var map = new ol.Map({
16 layers: [
17 new ol.layer.Tile({
18 source: new ol.source.OSM()
19 }),
20 new ol.layer.Image({
21 source: new ol.source.ImageVector({
22 source: new ol.source.Vector({
23 url: 'data/geojson/countries.geojson',
24 format: new ol.format.GeoJSON()
25 }),
26 style: new ol.style.Style({
27 fill: new ol.style.Fill({
28 color: 'rgba(255, 255, 255, 0.6)'
29 }),
30 stroke: new ol.style.Stroke({
31 color: '#319FD3',
32 width: 1
33 })
34 })
35 })
36 })
37 ],
38 target: 'map',
39 view: new ol.View({
40 center: [0, 0],
41 zoom: 1
42 })
43});
44
45var featureOverlay = new ol.layer.Vector({
46 source: new ol.source.Vector(),
47 map: map,
48 style: new ol.style.Style({
49 stroke: new ol.style.Stroke({
50 color: '#f00',
51 width: 1
52 }),
53 fill: new ol.style.Fill({
54 color: 'rgba(255,0,0,0.1)'
55 })
56 })
57});
58
59var highlight;
60var displayFeatureInfo = function(pixel) {
61
62 var feature = map.forEachFeatureAtPixel(pixel, function(feature) {
63 return feature;
64 });
65
66 var info = document.getElementById('info');
67 if (feature) {
68 info.innerHTML = feature.getId() + ': ' + feature.get('name');
69 } else {
70 info.innerHTML = ' ';
71 }
72
73 if (feature !== highlight) {
74 if (highlight) {
75 featureOverlay.getSource().removeFeature(highlight);
76 }
77 if (feature) {
78 featureOverlay.getSource().addFeature(feature);
79 }
80 highlight = feature;
81 }
82
83};
84
85map.on('pointermove', function(evt) {
86 if (evt.dragging) {
87 return;
88 }
89 var pixel = map.getEventPixel(evt.originalEvent);
90 displayFeatureInfo(pixel);
91});
92
93map.on('click', function(evt) {
94 displayFeatureInfo(evt.pixel);
95});