feat(blocks-google-maps): Update Google Maps block docs.

This commit is contained in:
StephanieJKS 2022-06-24 16:49:25 +02:00
parent c1929ad72d
commit 2657a3c6c3
4 changed files with 397 additions and 276 deletions

View File

@ -3,180 +3,67 @@
This is a Lowdefy blocks wrapper for this the [Google Maps API](https://developers.google.com/maps/documentation/javascript/overview).
To use this block, define a [@googlemaps/react-wrapper](https://www.npmjs.com/package/@googlemaps/react-wrapper). It currently implements:
- [Map](https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions)
- [Heatmap](https://developers.google.com/maps/documentation/javascript/reference/visualization#HeatmapLayerOptions)
- [Markers](https://developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions)
### Properties
- `apiKey: string`: Your Goolge Maps API key.
- `apiKey: string`: Your Google Maps API key.
- `libraries: array`: List of [Google libraries](https://developers.google.com/maps/documentation/javascript/libraries).
- `map: mapOptions`: All [map options](https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions).
- `center: { lat: number, lng: number }`: A coordinate position object by which to center the map.
- `zoom: number`: Map zoom level.
- `heatmap: heatmapOptions`: Add a heatmap layer, see more [heatmap options](https://developers.google.com/maps/documentation/javascript/reference/visualization#HeatmapLayerOptions). This will automatically load the `visualization` library.
- `data: { lat: number, lng: number } | { location: { lat: number, lng: number }, weight: number }[]`: A list of heatmap data points.
- `options: mapOptions`: All other [map options](https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions).
- `heatmap: heatmapOptions`: Add a heatmap layer, see more [heatmap options](https://developers.google.com/maps/documentation/javascript/reference/visualization#HeatmapLayerOptions). This will automatically load the `visualization` library, which must be added to the list of libraries in the `libraries` property of the `GoogleMapsScript` block.
- `data: { lat: number, lng: number, weight: number } []`: A list of heatmap data points.
- `style: cssObject`: A style object applied to the map element.
- `markers: markerOptions[]`: A list of Markers with marker options, see more [Javascript API Markers](https://developers.google.com/maps/documentation/javascript/markers).
- `position: { lat: number, lng: number }`: Position of marker on map.
- `label: string`: Label displayed on marker.
- `infoWindow: infoWindowOptions`: All infoWindow options, see [infoWindow options](https://developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindowOptions).
- `position: { lat: number, lng: number }`: Position of infoWindow on map.
- `visible: boolean`: When visible is true, blocks inside infoWindow content area will be rendered.
### Events
- `onClick`: Trigger onClick actions when the map is clicked, returns `_event` object:
- `event`: event object
- `latLng`:
- `lat`: latitudinal coordinate
- `lng`: longitudinal coordinate
- `map`: has functions removed
- `x`: position on map block
- `y`: position on map block
- `onClickMarker`: Trigger onClick actions when a marker is clicked, returns `_event` object:
- `domEvent`: event object
- `latLng`:
- `lat`: latitudinal coordinate
- `lng`: longitudinal coordinate
- `maps`: has functions removed
- `pixel`:
- `x`
- `y`
- `x`: x position on map block
- `y`: y position on map block
- `onClickMarker`: Trigger onClickMarker actions when a marker is clicked, returns `_event` object:
- `domEvent`: event object
- `latLng`:
- `lat`: latitudinal coordinate
- `lng`: longitudinal coordinate
- `pixel`:
- `x`: x position on map block
- `y`: y position on map block
- `onZoomChanged`: Trigger onZoomChanged actions when the zoom on the map is changed.
<!--
TODO:
### Methods
- `addMarker`: Accepts a single parameter object `marker` with marker properties.
- `removeMarker`: Accepts a single parameter object `marker` with position property.
-->
- `fitBounds`: Fit map to given bounds.
- `bounds: { lat: number, lng: number } []`: A list of the coordinate positions of the boundary points.
- `zoom: number`: Map zoom level.
## Examples
1. Add a list of markers:
1. Add markers:
```yaml
- id: google_maps_script_1
type: GoogleMapsScript
properties:
apiKey:
_build.env: GOOGLE_MAPS_API_KEY
blocks:
- id: google_maps_1
type: GoogleMaps
properties:
map:
options:
panControl: true
zoomControl: true
fullscreenControl: true
zoom: 14
center:
lat: -25.344
lng: 131.036
markers:
- position:
lat: -25.344
lng: 131.036
label: One
- position:
lat: -25.348
lng: 131.038
label: Two
```
2. Automatically fit bounds by leaving out zoom and center map properties:
```yaml
- id: google_maps_script_2
type: GoogleMapsScript
properties:
apiKey:
_build.env: GOOGLE_MAPS_API_KEY
blocks:
- id: google_maps_2
type: GoogleMaps
properties:
map:
options:
panControl: true
zoomControl: true
fullscreenControl: true
markers:
- position:
lat: -25.344
lng: 131.036
label: One
- position:
lat: -25.348
lng: 131.038
label: Two
```
3. Add tooltips by making use of infoWindow:
```yaml
- id: google_maps_script_3
type: GoogleMapsScript
properties:
apiKey:
_build.env: GOOGLE_MAPS_API_KEY
blocks:
- id: google_maps_3
type: GoogleMaps
properties:
map:
options:
panControl: true
zoomControl: true
fullscreenControl: true
zoom: 14
center:
lat: -25.344
lng: 131.036
markers:
- position:
lat: -25.344
lng: 131.036
label: One
- position:
lat: -25.348
lng: 131.038
label: Two
infoWindow:
position:
_state: position
visible:
_state: show_info
events:
onMarkerClick:
- id: set
type: SetState
params:
show_info:
_not:
_state: show_info
position:
_event: latLng
areas:
infoWindow:
blocks:
- id: content
type: Html
properties:
_nunjucks:
template: |
<h1>Lat: {{ position.lat }} Lng: {{ position.lng }} </h1>
on:
_state: true
```
4. Add markers with onClick event:
```yaml
- id: google_maps_script_4
```yaml
- id: google_maps_script_1
type: GoogleMapsScript
properties:
apiKey:
_build.env: GOOGLE_MAPS_API_KEY
blocks:
- id: google_maps_4
- id: google_maps_1
type: GoogleMaps
properties:
map:
@ -184,105 +71,292 @@ TODO:
panControl: true
zoomControl: true
fullscreenControl: true
zoom: 14
center:
lat: -25.344
lng: 131.036
zoom: 5
markers:
_state: markers_list
- position:
lat: -25.344
lng: 131.036
label: One
- position:
lat: -25.348
lng: 131.038
label: Two
```
2. Automatically bound map around marker positions when zoom and center map properties are left out:
```yaml
- id: google_maps_script_2
type: GoogleMapsScript
properties:
apiKey:
_build.env: GOOGLE_MAPS_API_KEY
blocks:
- id: google_maps_2
type: GoogleMaps
properties:
map:
options:
panControl: true
zoomControl: true
fullscreenControl: true
markers:
- position:
lat: -25.344
lng: 131.036
label: One
- position:
lat: -25.348
lng: 131.038
label: Two
```
3. Add tooltips by making use of infoWindow:
```yaml
- id: google_maps_script_3
type: GoogleMapsScript
properties:
apiKey:
_build.env: GOOGLE_MAPS_API_KEY
blocks:
- id: google_maps_3
type: GoogleMaps
properties:
map:
options:
panControl: true
zoomControl: true
fullscreenControl: true
zoom: 14
center:
lat: -25.344
lng: 131.036
markers:
- position:
lat: -25.344
lng: 131.036
label: One
- position:
lat: -25.348
lng: 131.038
label: Two
infoWindow:
position:
_state: position
visible:
_state: show_info
events:
onClick:
- id: markers_list
onMarkerClick:
- id: set
type: SetState
params:
markers_list:
_array.concat:
- - position:
_event: latLng
label: Hi
- _if_none:
- _state: markers_list
- []
```
show_info:
_not:
_state: show_info
position:
_event: latLng
areas:
infoWindow:
blocks:
- id: content
type: Html
properties:
html:
_nunjucks:
template: |
<h1>Lat: {{ position.lat }} Lng: {{ position.lng }} </h1>
on:
_state: true
```
4. Add markers with onClick event:
```yaml
- id: google_maps_script_4
type: GoogleMapsScript
properties:
apiKey:
_build.env: GOOGLE_MAPS_API_KEY
blocks:
- id: google_maps_4
type: GoogleMaps
properties:
map:
options:
panControl: true
zoomControl: true
fullscreenControl: true
center:
lat: -25.344
lng: 131.036
zoom: 5
markers:
_state: markers_list
events:
onClick:
- id: markers_list
type: SetState
params:
markers_list:
_array.concat:
- - position:
_event: latLng
label: Hi
- _if_none:
- _state: markers_list
- []
```
5. Add a heatmap:
```yaml
- id: google_maps_script_5
type: GoogleMapsScript
properties:
libraries:
- visualization
apiKey:
_build.env: GOOGLE_MAPS_API_KEY
blocks:
- id: google_maps_5
type: GoogleMapsHeatmap
properties:
map:
disableDefaultUI: true
heatmap:
data:
- lat: 34.091158
lng: -118.2795188
weight: 1
- lat: 34.0771192
lng: -118.2587199
weight: 2
- lat: 34.083527
lng: -118.370157
weight: 1
- lat: 34.0951843
lng: -118.283107
weight: 2
- lat: 34.1033401
lng: -118.2875469
weight: 4
- lat: 34.035798
lng: -118.251288
weight: 2
- lat: 34.0776068
lng: -118.2646526
weight: 3
- lat: 34.0919263
lng: -118.2820544
weight: 3
- lat: 34.0568525
lng: -118.3646369
weight: 3
- lat: 34.0285781
lng: -118.4115541
weight: 0
- lat: 34.017339
lng: -118.278469
weight: 0
- lat: 34.0764288
lng: -118.3661624
weight: 4
- lat: 33.9925942
lng: -118.4232475
weight: 4
- lat: 34.0764345
lng: -118.3730332
weight: 3
- lat: 34.093981
lng: -118.327638
weight: 0
- lat: 34.056385
lng: -118.2508724
weight: 1
- lat: 34.107701
lng: -118.2667943
weight: 4
- lat: 34.0450139
lng: -118.2388682
weight: 4
- lat: 34.1031997
lng: -118.2586152
weight: 1
- lat: 34.0828183
lng: -118.3241586
weight: 1
options:
radius: 20
opacity: 1
```
```yaml
- id: google_maps_script_5
type: GoogleMapsScript
properties:
libraries:
- visualization
apiKey:
_build.env: GOOGLE_MAPS_API_KEY
blocks:
- id: google_maps_5
type: GoogleMapsHeatmap
properties:
map:
disableDefaultUI: true
heatmap:
data:
- lat: 34.091158
lng: -118.2795188
weight: 1
- lat: 34.0771192
lng: -118.2587199
weight: 2
- lat: 34.083527
lng: -118.370157
weight: 1
- lat: 34.0951843
lng: -118.283107
weight: 2
- lat: 34.1033401
lng: -118.2875469
weight: 4
- lat: 34.035798
lng: -118.251288
weight: 2
- lat: 34.0776068
lng: -118.2646526
weight: 3
- lat: 34.0919263
lng: -118.2820544
weight: 3
- lat: 34.0568525
lng: -118.3646369
weight: 3
- lat: 34.0285781
lng: -118.4115541
weight: 0
- lat: 34.017339
lng: -118.278469
weight: 0
- lat: 34.0764288
lng: -118.3661624
weight: 4
- lat: 33.9925942
lng: -118.4232475
weight: 4
- lat: 34.0764345
lng: -118.3730332
weight: 3
- lat: 34.093981
lng: -118.327638
weight: 0
- lat: 34.056385
lng: -118.2508724
weight: 1
- lat: 34.107701
lng: -118.2667943
weight: 4
- lat: 34.0450139
lng: -118.2388682
weight: 4
- lat: 34.1031997
lng: -118.2586152
weight: 1
- lat: 34.0828183
lng: -118.3241586
weight: 1
options:
radius: 20
opacity: 1
```
6. Trigger fitBounds using a Button:
```yaml
- id: google_maps_script_6
type: GoogleMapsScript
properties:
apiKey:
_build.env: GOOGLE_MAPS_API_KEY
blocks:
- id: btn
type: Button
events:
onClick:
- id: set_boundaries
type: CallMethod
params:
blockId: google_maps_6
method: fitBounds
args:
- bounds:
- lat: -25.344
lng: 131.036
- lat: -25.348
lng: 131.038
zoom: 10
- id: google_maps_6
type: GoogleMaps
properties:
map:
zoom: 5
center:
lat: -35.344
lng: 31.036
```
<!--
7. Trigger fitBounds using the onLoad event:
```yaml
- id: google_maps_script_7
type: GoogleMapsScript
properties:
apiKey:
_build.env: GOOGLE_MAPS_API_KEY
blocks:
- id: google_maps_7
type: GoogleMaps
properties:
map:
zoom: 5
center:
lat: -35.344
lng: 31.036
events:
onLoad:
- id: set_boundaries
type: CallMethod
params:
blockId: google_maps_7
method: fitBounds
args:
- bounds:
- lat: -25.344
lng: 131.036
zoom: 10
``` -->

View File

@ -4,13 +4,9 @@
"type": "object",
"additionalProperties": false,
"properties": {
"apiKey": {
"type": "string",
"description": "Your Goolge Maps API key."
},
"map": {
"type": "object",
"description": "Map options, see <a href='https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions'>more</a>.",
"description": "Map settings object.",
"properties": {
"center": {
"type": "object",
@ -29,6 +25,10 @@
"zoom": {
"type": "number",
"description": "Map zoom level."
},
"options": {
"type": "object",
"description": "Map options, see <a href='https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions'>more</a>."
}
}
},
@ -42,19 +42,6 @@
"items": {
"type": "object",
"properties": {
"location": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Lateral coordinate."
},
"lng": {
"type": "number",
"description": "Longitudinal coordinate."
}
}
},
"lat": {
"type": "number",
"description": "Lateral coordinate."
@ -91,9 +78,32 @@
}
}
},
"tooltip": {
"label": {
"type": "string",
"description": "Will create a infoWindow to display additional marker information when clicked. Html string is supported."
"description": "Label displayed on marker."
}
}
}
},
"infoWindow": {
"type": "object",
"description": "infoWindow options, see <a href='https://developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindowOptions'>more</a>.",
"properties": {
"visible": {
"type": "boolean",
"description": "When visible is true, blocks inside infoWindow content area will be rendered."
},
"position": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Lateral coordinate."
},
"lng": {
"type": "number",
"description": "Longitudinal coordinate."
}
}
}
}
@ -115,6 +125,10 @@
"onMarkerClick": {
"type": "array",
"description": "Trigger actions when marker is clicked."
},
"onZoomChanged": {
"type": "array",
"description": "Trigger actions when the zoom on the map is changed."
}
}
}

View File

@ -4,13 +4,9 @@
"type": "object",
"additionalProperties": false,
"properties": {
"apiKey": {
"type": "string",
"description": "Your Goolge Maps API key."
},
"map": {
"type": "object",
"description": "Map options, see <a href='https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions'>more</a>.",
"description": "Map settings object.",
"properties": {
"center": {
"type": "object",
@ -29,6 +25,10 @@
"zoom": {
"type": "number",
"description": "Map zoom level."
},
"options": {
"type": "object",
"description": "Map options, see <a href='https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions'>more</a>."
}
}
},
@ -42,19 +42,6 @@
"items": {
"type": "object",
"properties": {
"location": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Lateral coordinate."
},
"lng": {
"type": "number",
"description": "Longitudinal coordinate."
}
}
},
"lat": {
"type": "number",
"description": "Lateral coordinate."
@ -91,9 +78,32 @@
}
}
},
"tooltip": {
"label": {
"type": "string",
"description": "Will create a infoWindow to display additional marker information when clicked. Html string is supported."
"description": "Label displayed on marker."
}
}
}
},
"infoWindow": {
"type": "object",
"description": "infoWindow options, see <a href='https://developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindowOptions'>more</a>.",
"properties": {
"visible": {
"type": "boolean",
"description": "When visible is true, blocks inside infoWindow content area will be rendered."
},
"position": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Lateral coordinate."
},
"lng": {
"type": "number",
"description": "Longitudinal coordinate."
}
}
}
}
@ -115,6 +125,10 @@
"onMarkerClick": {
"type": "array",
"description": "Trigger actions when marker is clicked."
},
"onZoomChanged": {
"type": "array",
"description": "Trigger actions when the zoom on the map is changed."
}
}
}

View File

@ -6,7 +6,22 @@
"properties": {
"apiKey": {
"type": "string",
"description": "Your Goolge Maps API key."
"description": "Your Google Maps API key."
},
"libraries": {
"type": "array",
"description": "A list of Google libraries, see <a href='https://developers.google.com/maps/documentation/javascript/libraries'>more</a>.",
"items": {
"type": "string",
"enum": [
"drawing",
"geometry",
"journeySharing",
"localContext",
"places",
"visualization"
]
}
}
}
},
@ -21,6 +36,10 @@
"onMarkerClick": {
"type": "array",
"description": "Trigger actions when marker is clicked."
},
"onZoomChanged": {
"type": "array",
"description": "Trigger actions when the zoom on the map is changed."
}
}
}