"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Adicionar camada personalizada ao folheto incorporado

Adicionar camada personalizada ao folheto incorporado

Publicado em 2024-11-04
Navegar:681

Add custom layer to embe-leaflet

O problema

ember-leaflet é um complemento muito popular do ecossistema EmberJS que permite muita flexibilidade.

Mas e se eu quiser estender sua funcionalidade para que ela possa fazer ainda mais? E se eu quiser que ele seja um novo componente gerado diretamente das camadas ?

A solução

Primeiro precisaremos do nosso novo componente. Para simplificar, este componente apenas estenderá um componente de camada existente do complemento. Vamos usar o componente marcador e fazer com que ele simplesmente ignore o argumento de localização e defina um valor falso e codificado:

// 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);
  }
}

Depois disso, precisaremos registrar o componente no serviço ember-leaflet:

// 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,
};

E agora podemos usá-lo:

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

Notas

Você também pode ler sobre esta técnica na página oficial de documentação do folheto ember.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/michalbryxi/add-custom-component-to-embe-leaflet-5475?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3