Logo

dev-resources.site

for different kinds of informations.

Add custom layer to embe-leaflet

Published at
9/4/2024
Categories
ember
javascript
leafletjs
Author
michalbryxi
Categories
3 categories in total
ember
open
javascript
open
leafletjs
open
Author
11 person written this
michalbryxi
open
Add custom layer to embe-leaflet

The problem

ember-leaflet is a very popular addon from EmberJS ecosystem that allows a lot of flexibility.

But what if I want to extend it's functionality so that it can do even more? And what if I want it as a new yielded component directly from the <LeafletMap>s layers?

The solution

At first we will need our new component. For simplicity this component will just extend an existing layer component from the addon. Let's use the marker component and make it so that it just ignores location argument and sets a fake, hardcoded value:

// app/components/fake-marker-layer.gts

import MarkerLayer from 'ember-leaflet/components/marker-layer';

export default class FakeMarkerLayer extends MarkerLayer {
  get location() {
    return this.L.latLng(46.68, 7.85);
  }
}
Enter fullscreen mode Exit fullscreen mode

After this we will need to register the component with ember-leaflet service:

// app/instance-initializers/leaflet.ts

import FakeMarkerLayer from '../components/fake-marker-layer';
import type Owner from '@ember/owner';

export function initialize(owner: Owner) {
  const emberLeafletService = owner.lookup('service:ember-leaflet');

  if (emberLeafletService) {
    emberLeafletService.registerComponent('fake-marker-layer', {
      as: 'fake-marker',
      component: FakeMarkerLayer,
    });
  }
}

export default {
  initialize,
};
Enter fullscreen mode Exit fullscreen mode

And now we can use it:

import LeafletMap from 'ember-leaflet/components/leaflet-map';

<template>
  <LeafletMap
    @lat={{46.6}}
    @lng={{7.8}}
    @zoom={{15}}
    as |layers|
  >
    <layers.fake-marker @lat={{999.99}} @lng={{0}} />
  </LeafletMap>
</template>
Enter fullscreen mode Exit fullscreen mode

Notes

You can read on this technique also on the official ember-leaflet documentation page.

ember Article's
30 articles in total
Favicon
Ember.js in 60 Seconds
Favicon
Intro to Ember.js Components
Favicon
The Top 7 Reasons You Should NOT Use Ember.js on Your Next Project
Favicon
why don't we have a slack channel?
Favicon
Installing EmberJS v2 addons from GitHub forks using PNPM
Favicon
Add custom layer to embe-leaflet
Favicon
Why Ember Wins My Heart Over React ❀️ And Maybe Yours Too!
Favicon
Migrate from ember-cli-deploy-sentry to sentry-cli
Favicon
ERR_PNPM_BAD_PM_VERSION This project is configured to use vX of pnpm. Your current pnpm is vY
Favicon
Fixing Package Dependencies
Favicon
React inside Ember - The Second Chapter
Favicon
πŸš€ Rendering Dynamic Components in Ember.js with Embroider
Favicon
How to use the new Ember theme for QUnit
Favicon
Effects in Ember
Favicon
unsupported ambiguity between helper and component
Favicon
12 common Ember errors to know: A definitive guide on handling EmberJS errors
Favicon
Demystifying Ember.js Development: How to Hire the Right Developer for YourΒ Project
Favicon
Is Angular.js or Ember.js the better choice for JavaScript frameworks?
Favicon
Integrations Series: Authentication And Connection
Favicon
Support for in/inter page linking / scrolling in EmberJS
Favicon
Ember-cli config
Favicon
GraphQL in Your Ember App with Glimmer Apollo
Favicon
Setting up Tailwind, the easy way
Favicon
Context leaking in EmberJS tests
Favicon
What to use instead of `@ember/string`
Favicon
Ember Language Server in Emacs
Favicon
Why Ember.js is designed for Enterprise Software Development
Favicon
Demystifying Ember Serialization: A Comprehensive Guide
Favicon
ember-cli is stuck on certain version
Favicon
React micro-frontend in ember app - Part 2

Featured ones: