The GCUI.Map constructor with
server
and layer
options arguments gets asynchronously map informations
(extent, resolutions, …) from the Geoptimization server.
The map events system trigger a load event to notify that the map is loaded :
HTML
<div id="map1" style="height:300px"></div>
JavaScript
var options = { server : 'https://api.geoconcept.com/EU/GCW/geoconcept-web/wmts', layer : 'STANDARD' }; var map = new GCUI.Map('map1', options); map.onEvent("load", onMapLoaded); function onMapLoaded() { var map = GCUI.getMap('map1'); alert("Map is loaded. Map extent is : " + map.getExtent()); }
The following code registers a callback function that will be called when map is ready :
map.onEvent("load",onMapLoaded);
In this example, the callback function display the map extent :
function onMapLoaded() { var map = GCUI.getMap('map1'); alert("Map is loaded. Map extent is : "+ map.getExtent()); }
This example shows how to listen to the map moveend
event :
HTML
<div id="map2" style="height:300px"></div>
JavaScript
var options = { server : 'https://api.geoconcept.com/EU/GCW/geoconcept-web/wmts', layer : 'STANDARD' }; var map = new GCUI.Map('map2', options); map.on('moveend', onMoveEnd); function onMoveEnd(evt) { alert("End move, map extent is : "+ map.getExtent()+ " and zoom level is " + map.getZoom()); }
You can add a control to the map to register and define an action on the click event :
HTML
<div id="map4" style="height:300px"></div>
JavaScript
var options = { server : 'https://api.geoconcept.com/EU/GCW/geoconcept-web/wmts', layer : 'STANDARD' }; var map = new GCUI.Map('map4', options); map.on('singleclick', onClick); function onClick(evt) { var coordinate = evt.coordinate; alert("You clicked near x: " + coordinate[0] + " , y: " + coordinate[1]); }
You can add a control to the map to register and define an action on the feature selected event :
HTML
<link rel="stylesheet" href="https://openlayers.org/en/v5.3.0/css/ol.css" type="text/css" /> <style> .anchorright#ol-popup { right: -30px; } .anchorright#ol-popup:after { right: 20px; } .anchorright#ol-popup:before { right: 20px; } .anchorbottom#ol-popup { bottom: 11px; } .anchorbottom#ol-popup:after, .anchorbottom#ol-popup:before { top: 100%; } #ol-popup-content.content { max-height: 25em; overflow-y: auto; } .#ol-popup{ padding-top: 2em; padding-right: 0.35em; } .anchorbottom#ol-popup:after { border-top-color: white; } .anchorbottom#ol-popup:before { border-top-color: #cccccc; } .anchorleft#ol-popup { left: -25px; } .anchorleft#ol-popup:after { left: 25px; } .anchorleft#ol-popup:before { left: 25px; } .anchortop#ol-popup { top: 11px; } .anchortop#ol-popup:after, .anchortop#ol-popup:before { bottom: 100%; } .anchortop#ol-popup:after { border-bottom-color: white; } .anchortop#ol-popup:before { border-bottom-color: #cccccc; } #ol-popup { position: absolute; background-color: white; -webkit-filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2)); filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2)); padding: 15px; border-radius: 5px; border: 1px solid #cccccc; min-width: 280px; } #ol-popup:after, #ol-popup:before { border: solid transparent; content: " "; height: 0; width: 0; position: absolute; pointer-events: none; } #ol-popup:after { border-width: 10px; margin-left: -10px; } #ol-popup:before { border-width: 11px; margin-left: -11px; } #ol-popup-closer { text-decoration: none; position: absolute; top: 2px; right: 8px; font-family: Icons; } #ol-popup-closer:hover { cursor: pointer; color: #004687; } #ol-popup-closer:after { content: "✖"; } #ol-popup .pages { text-align: right; position: relative; right: -1em; bottom: -0.8em; } #ol-popup .pages i { cursor: pointer; } #ol-popup .pages > * { display: inline-block; } #ol-popup .pages i.disabled { cursor: default; } .gcuiAnchoredContentData { height: 100%; width: 100%; overflow-y: auto; overflow-x: hidden; } .gcuiAnchoredContentData .table-width { width: 50%; } .gcuiAnchoredContentData .ui.table .right.aligned .content { text-align: right; margin-right: .2em; color: #808080; } .gcuiAnchoredContentData .ui.table .content { color: #000000; border: none !important; } .gcuiAnchoredContentData .ui.table td { padding: .25em; border: none !important; } .gcuiAnchoredContentData .ui.table, th, td { border: none !important; } .ol-custom-overviewmap, .ol-custom-overviewmap.ol-uncollapsible { bottom: auto; left: auto; right: 0; top: 0; } .ol-custom-overviewmap:not(.ol-collapsed) { border: 1px solid black; } .ol-custom-overviewmap .ol-overviewmap-map { border: none; width: 300px; } .ol-custom-overviewmap .ol-overviewmap-box { border: 2px solid red; } .ol-custom-overviewmap:not(.ol-collapsed) button{ bottom: auto; left: auto; right: 1px; top: 1px; } .ol-rotate { top: 170px; right: 0; } </style> <div id="map5" style="height:300px"></div>
JavaScript
var options = { server : 'https://api.geoconcept.com/EU/GCW/geoconcept-web/wmts', layer : 'STANDARD' }; var map = new GCUI.Map('map5', options); map.onEvent("load", onMapLoaded); function onMapLoaded() { var vectorSource = new ol.source.Vector({}); var point_feature_1 = new ol.Feature({ geometry: new ol.geom.Point([255490, 6249610]), Name: "My Data 1" }); var point_feature_2 = new ol.Feature({ geometry: new ol.geom.Point([264433, 6252668]), Name: "My Data 2" }); vectorSource.addFeature(point_feature_1); vectorSource.addFeature(point_feature_2); vector_layer = new GCUI.Layer.StandardVector({ source: vectorSource }); map.addLayer(vector_layer); //Adding a style to the vector layer var fill = new ol.style.Fill({ color: [0, 70, 135, 0.9] }); var stroke = new ol.style.Stroke({ color: [255, 255, 255, 1], width: 2 }); var style = new ol.style.Style({ image: new ol.style.Circle({ fill: fill, stroke: stroke, radius: 10 }), fill: fill, stroke: stroke }); vector_layer.setStyle(style); extent = vectorSource.getExtent(); map.getView().fit(extent); //select interaction working on "click" var selectClick = new ol.interaction.Select({ condition: ol.events.condition.click }); if (selectClick !== null) { map.addInteraction(selectClick); selectClick.on('select', function(e) { var feature = e.target.getFeatures().getArray(); if (feature.length >= 1) { var opt_options = "<div class='gcuiAnchoredContentData'><table class='ui very basic table unstackable' cellspacing='0' cellpadding='0'><tbody><tr><td class='right aligned'><div class='content'>X</div></td><td><div class='content'>" + feature[0].values_.geometry.flatCoordinates[0] + "</div></td></tr><tr><td class='right aligned'><div class='content'>Y</div></td><td><div class='content'>" + feature[0].values_.geometry.flatCoordinates[1] + "</div></td></tr><tr><td class='right aligned'><div class='content'>Name</div></td><td><div class='content'>" + feature[0].values_.Name + "</div></td></tr></tbody></table></div>"; var popup = new GCUI.Control.Popup(map, feature[0].values_.geometry.flatCoordinates, {content : opt_options}); map.addOverlay(popup); popup.initialize(feature[0].values_.geometry.flatCoordinates); } }); } }
You can add a control to the map to register and define an action on the feature modified event :
HTML
<div id="map6" style="height:300px"></div>
JavaScript
var options = { server : 'https://api.geoconcept.com/EU/GCW/geoconcept-web/wmts', layer : 'STANDARD' }; var map = new GCUI.Map('map6', options); map.onEvent("load", onMapLoaded); function onMapLoaded() { var vectorSource = new ol.source.Vector({}); var point_feature_1 = new ol.Feature({ geometry: new ol.geom.Point([255490, 6249610]), Name: "My Data 1" }); var point_feature_2 = new ol.Feature({ geometry: new ol.geom.Point([264433, 6252668]), Name: "My Data 2" }); vectorSource.addFeature(point_feature_1); vectorSource.addFeature(point_feature_2); vector_layer = new GCUI.Layer.StandardVector({ source: vectorSource }); map.addLayer(vector_layer); //Adding a style to the vector layer var fill = new ol.style.Fill({ color: [0, 70, 135, 0.9] }); var stroke = new ol.style.Stroke({ color: [255, 255, 255, 1], width: 2 }); var style = new ol.style.Style({ image: new ol.style.Circle({ fill: fill, stroke: stroke, radius: 10 }), fill: fill, stroke: stroke }); vector_layer.setStyle(style); extent = vectorSource.getExtent(); map.getView().fit(extent); var modify = new ol.interaction.Modify({source: vectorSource}); map.addInteraction(modify); }