Comments (3)
The marker component doesn't have any event handlers registered. It probably needs a PR to add this :)
from svelte-mapbox.
Just put button
into Marker slot
<Marker>
<button on:click></button>
</Marker>
from svelte-mapbox.
After reading the mapbox api documentation I edited Marker.svelte to expose a click event handler but I also suggest this should be changed in Marker.svelte, not with a slotted helper button.
See markerel and the on:click on the first div:
Marker.svelte
<script>
import { onMount, getContext } from 'svelte'
import { contextKey } from '../mapbox.js'
const { getMap, getMapbox } = getContext(contextKey)
const map = getMap()
const mapbox = getMapbox()
function randomColour () {
return Math.round(Math.random() * 255)
}
function move (lng, lat) {
marker.setLngLat({ lng, lat })
}
export let lat
export let lng
export let label = 'Marker'
export let popupClassName = 'beyonk-mapbox-popup'
export let markerOffset = [ 0, 0 ]
export let popupOffset = 10
export let color = randomColour()
export let popup = true
export let popupOptions = {}
export let markerOptions = {}
let marker
let element
let elementPopup
let markerel
$: marker && move(lng, lat)
onMount(() => {
const namedParams = Object.assign(
{
offset: markerOffset
},
element.hasChildNodes() ? { element } : { color }
)
marker = new mapbox.Marker(Object.assign(namedParams, markerOptions))
markerel = marker.getElement()
markerel.addEventListener('click', (e) => {
map.flyTo({center: [lng,lat],essential:true})
})
if (popup) {
const namedPopupParams = { offset: popupOffset, className: popupClassName }
const popupEl = new mapbox.Popup(Object.assign(namedPopupParams, popupOptions))
if (elementPopup.hasChildNodes()) {
popupEl.setDOMContent(elementPopup)
} else {
popupEl.setText(label)
}
marker.setPopup(popupEl)
}
marker
.setLngLat({ lng, lat })
.addTo(map)
return () => marker.remove()
})
export function getMarker () {
return marker
}
</script>
<div on:click bind:this={element} >
<slot/>
</div>
<div class='popup' bind:this={elementPopup} >
<slot name="popup" />
</div>
from svelte-mapbox.
Related Issues (20)
- Setting $session in Sveltekit breaks the map HOT 4
- How to get GeoCoder selected result? HOT 1
- Access to Markers via code HOT 1
- how to offline
- Issue with multiple maps on a page? HOT 2
- How do you search for places using the geocoder ? HOT 1
- getContext for custom svelte map component HOT 1
- doesnt work with SvelteKit HOT 5
- Source and Layer components
- Could not find a declaration file for module '@beyonk/svelte-mapbox'. HOT 2
- Is cooperativeGestures parameter supported? HOT 1
- Cloned, added token, renamed to .env.local, installed and run but map not loading HOT 1
- Upgrading from 8.1.4 to 8.2.0: Lighthouse score much worse
- Doesn't work when inside a flex container HOT 1
- Multiple maps on same page HOT 2
- Showing Directions/Routes
- Marker.color types are invalid
- Uncaught (in promise) TypeError: Cannot set properties of undefined (setting 'accessToken') HOT 5
- SvelteKit build fails due to peer dependency issues with Svelte v4 HOT 5
- map height HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from svelte-mapbox.