Skip to content

Commit 88c917f

Browse files
committed
Added settings to lock a map in place
closes gh-3
1 parent dd3e722 commit 88c917f

5 files changed

Lines changed: 20 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
- De shortcode ondersteund nu de instellingen `enable_controls=0` en `enable_interactions=0` om een kaart te fixeren. Door `enable_controls` op `0` te zetten verdwijnen de buttons voor zoomen. Met `enable_interactions=0` verdwijnt de mogelijkheid om met touch, muis of toetsenbord te navigeren door de kaart. Standaard staan deze instellingen op `1` (dit komt overeen met de vorige versies). Hiermee kan een kaart gefixeerd worden.
12
- Update naar OpenLayers 10.
23
- Update naar React 18.
34
- De kaart krijgt nu niet meer automatisch focus wanneer de muis er overheen gaat. Op schermen waar de kaart niet volledig paste gaf dit een hinderlijke gebruikerservaring.

plugins/gh-datainmap/SHORTCODE.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,8 @@ Met `toggler_description` is het mogelijk om de standaard tekst (DataInMap -> In
4646

4747
`[datainmap layers=1,2 types=1,2,3,4 enable_toggler=1 toggler_description="U kunt hier kaartlagen in- of uitschakelen."]`
4848

49-
Om de container waar DataInMap wordt geplaatst te voorzien van een of meerdere CSS classes kan gebruik gemaakt worden van `css_class`, bijv. `[datainmap css_class="kaart-groot"]`. Deze CSS classes dienen in de stylesheet van het gebruikte thema te staan.
49+
Om de container waar DataInMap wordt geplaatst te voorzien van een of meerdere CSS classes kan gebruik gemaakt worden van `css_class`, bijv. `[datainmap css_class="kaart-groot"]`. Deze CSS classes dienen in de stylesheet van het gebruikte thema te staan.
50+
51+
Het is mogelijk om de kaart te fixeren door de zogenaamde controls (knoppen voor zoomen) en interactions (zoomen met muis, touch en toetsenbordpijltjes etc.) uit te schakelen. Dit geeft dan een kaart waarop de gebruiker niet kan inzoomen of kan verplaatsen. Let op, als de zoekfunctie ingeschakeld blijft zal deze inzoomen op de locatie en kan de gebruiker niet uitzoomen. De standaard waardes voor `enable_controls` en `enable_interactions` is `1`.
52+
53+
`[datainmap layers=1 types=1 enable_controls=0 enable_interactions=0 enable_search=0]`

plugins/gh-datainmap/includes/shortcode.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ function gh_dim_shortcode($atts, $content = null) {
3434
'enable_filter' => 0,
3535
'enable_features_listbox' => 1,
3636
'enable_toggler' => 0,
37+
'enable_controls' => 1,
38+
'enable_interactions' => 1,
3739
'toggle_layers' => null,
3840
'untoggled_layers' => null,
3941
'toggle_types' => 'ALL',
@@ -57,6 +59,8 @@ function gh_dim_shortcode($atts, $content = null) {
5759
$settings['enable_tooltip'] = $args['enable_tooltip'] == 1 ? true : false;
5860
$settings['enable_filter'] = $args['enable_filter'] == 1 ? true : false;
5961
$settings['enable_features_listbox'] = $args['enable_features_listbox'] == 1 ? true : false;
62+
$settings['enable_controls'] = $args['enable_controls'] == 1 ? true : false;
63+
$settings['enable_interactions'] = $args['enable_interactions'] == 1 ? true : false;
6064
$settings['enable_toggler'] = $args['enable_toggler'] == 1 ? true : false;
6165
$settings['toggler_description'] = $args['toggler_description'];
6266
$settings['dynamic_loading'] = $args['dynamic_loading'] == 1 ? true : false;

src/components/map.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
import 'ol/ol.css';
1515
import Map from 'ol/Map';
1616
import View from 'ol/View';
17+
import { defaults as defaultInteractions } from 'ol/interaction';
18+
import { defaults as defaultControls } from 'ol/control';
19+
import Collection from 'ol/Collection';
1720
import React, {Component} from 'react';
1821
import _ from 'lodash';
1922
import { zoomTo, zoomToMax } from '../util/map-animations';
@@ -38,10 +41,16 @@ export class MapComponent extends Component {
3841
const olView = new View(this.props.viewSettings);
3942
const mapElement = this.refMap.current;
4043
const tooltipElement = this.refTooltip.current;
44+
// Remove all controls if desired
45+
const controls = this.props.enableControls ? defaultControls() : new Collection();
46+
// Remove all interactions if desired
47+
const interactions = this.props.enableInteractions ? defaultInteractions() : new Collection();
4148
this.olMap = new Map({
4249
view: olView,
4350
target: mapElement,
4451
layers: this.props.layers,
52+
controls,
53+
interactions,
4554
});
4655
// Get zoom elements so we can provide them with a proper aria-label
4756
this.olMap.getControls().forEach((control) => {

src/datainmap.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,7 @@ else {
475475
const App = () => {
476476
return (
477477
<Provider store={store}>
478-
<MapComponentLink enableTooltip={settings.enable_tooltip} enableFeaturesListbox={settings.enable_features_listbox}>
478+
<MapComponentLink enableTooltip={settings.enable_tooltip} enableFeaturesListbox={settings.enable_features_listbox} enableControls={settings.enable_controls} enableInteractions={settings.enable_interactions}>
479479
{ settings.enable_search && <SearchComponentLink /> }
480480
{ settings.enable_toggler && <TogglerComponentLink /> }
481481
{ settings.enable_filter && <FilterComponentLink /> }

0 commit comments

Comments
 (0)