LeafletJS - Marcadores

Para marcar um único local no mapa, o folheto fornece marcadores. Esses marcadores usam um símbolo padrão e esses símbolos podem ser personalizados. Neste capítulo, veremos como adicionar marcadores e como personalizá-los, animá-los e removê-los.

Adicionando um Marcador Simples

Para adicionar um marcador a um mapa usando a biblioteca JavaScript Leaflet, siga as etapas abaixo -

Step 1 - Crie um Mapobjeto passando um elemento < div > (String ou objeto) e opções de mapa (opcional).

Step 2 - Crie um Layer objeto passando a URL do bloco desejado.

Step 3 - Adicione o objeto de camada ao mapa usando o addLayer() método do Map classe.

Step 4 - Instancie o Marker classe passando em um latlng objeto que representa a posição a ser marcada, conforme mostrado abaixo.

// Creating a marker
var marker = new L.Marker([17.385044, 78.486671]);

Step 5 - Adicione o objeto marcador criado nas etapas anteriores ao mapa usando o addTo() método do Marker classe.

// Adding marker to the map
marker.addTo(map);

Exemplo

O código a seguir define o marcador na cidade chamada Hyderabad (Índia).

<!DOCTYPE html>
<html>
   <head>
      <title>Leaflet sample</title>
      <link rel = "stylesheet" href = "http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css"/>
      <script src = "http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
   </head>
   
   <body>
      <div id = "map" style = "width:900px; height:580px"></div>
      <script>
         // Creating map options
         var mapOptions = {
            center: [17.385044, 78.486671],
            zoom: 10
         }
         // Creating a map object
         var map = new L.map('map', mapOptions);
         
         // Creating a Layer object
         var layer = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');
         
         // Adding layer to the map
         map.addLayer(layer);
         
         // Creating a marker
         var marker = L.marker([17.385044, 78.486671]);
         
         // Adding marker to the map
         marker.addTo(map);
      </script>
   </body>
   
</html>

Ele gera a seguinte saída -

Vinculando Pop-ups ao Marcador

Para vincular um pop-up simples exibindo uma mensagem a um marcador, siga as etapas abaixo -

Step 1 - Crie um Mapobjeto passando um elemento < div > (String ou objeto) e opções de mapa (opcional).

Step 2 - Crie um Layer objeto passando a URL do bloco desejado.

Step 3 - Adicione o objeto de camada ao mapa usando o addLayer() método do Map classe.

Step 4 - Instancie o Marker classe passando em um latlng objeto que representa a posição a ser marcada.

Step 5 - Anexe pop-up ao marcador usando bindPopup() como mostrado abaixo.

// Adding pop-up to the marker
marker.bindPopup('Hi Welcome to Tutorialspoint').openPopup();

Step 6 - Finalmente, adicione o Marker objeto criado nas etapas anteriores para o mapa usando o addTo() método do Marker classe.

Exemplo

O código a seguir define o marcador na cidade Hyderabad (Índia) e adiciona um pop-up a ele.

<!DOCTYPE html>
<html>
   <head>
      <title>Binding pop-Ups to marker</title>
      <link rel = "stylesheet" href = "http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css"/>
      <script src = "http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
   </head>
   
   <body>
      <div id = "map" style = "width:900px; height:580px"></div>
      <script>
         // Creating map options
         var mapOptions = {
            center: [17.385044, 78.486671],
            zoom: 15
         }
         var map = new L.map('map', mapOptions); // Creating a map object
         
         // Creating a Layer object
         var layer = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');
         map.addLayer(layer);         // Adding layer to the map
         var marker = L.marker([17.438139, 78.395830]);    // Creating a Marker
         
         // Adding popup to the marker
         marker.bindPopup('This is Tutorialspoint').openPopup();
         marker.addTo(map); // Adding marker to the map
      </script>
   </body>
   
</html>

Ele gera a seguinte saída

Opções de Marcador

Ao criar um marcador, você também pode passar um marker optionsvariável além do objeto latlang. Usando esta variável, você pode definir valores para várias opções do marcador, como ícone, arrastável, teclado, título, alt, zInsexOffset, opacidade, riseOnHover, riseOffset, painel, arrastável, etc.

Para criar um mapa usando as opções do mapa, você precisa seguir as etapas abaixo -

Step 1 - Crie um Mapobjeto passando um elemento < div > (String ou objeto) e opções de mapa (opcional).

Step 2 - Crie um Layer objeto passando a URL do bloco desejado.

Step 3 - Adicione o objeto de camada ao mapa usando o addLayer() método do Map classe.

Step 4 - Crie uma variável para markerOptions e especifique valores para as opções necessárias.

Criar uma markerOptions objeto (é criado como um literal) e definir valores para as opções iconUrl e iconSize.

// Options for the marker
var markerOptions = {
   title: "MyLocation",
   clickable: true,
   draggable: true
}

Step 5 - Instancie o Marker classe passando em um latlng objeto que representa a posição a ser marcada e o objeto de opções, criado na etapa anterior.

// Creating a marker
var marker = L.marker([17.385044, 78.486671], markerOptions);

Step 6 - Finalmente, adicione o Marker objeto criado nas etapas anteriores para o mapa usando o addTo() método do Marker classe.

Exemplo

O código a seguir define o marcador na cidade Hyderabad (Índia). Este marcador é clicável e arrastável com o títuloMyLocation.

<html>
   <head>
      <title>Marker Options Example</title>
      <link rel = "stylesheet" href = "http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css"/>
      <script src = "http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
   </head>
   
   <body>
      <div id = "map" style = "width:900px; height:580px"></div>
      <script>
         // Creating map options
         var mapOptions = {
            center: [17.385044, 78.486671],
            zoom: 10
         }
         // Creating a map object
         var map = new L.map('map', mapOptions);
         
         // Creating a Layer object
         var layer = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');
        
         // Adding layer to the map
         map.addLayer(layer);
         
         // Creating a Marker
         var markerOptions = {
            title: "MyLocation",
            clickable: true,
            draggable: true
         }
         // Creating a marker
         var marker = L.marker([17.385044, 78.486671], markerOptions);
         
         // Adding marker to the map
         marker.addTo(map);
      </script>
   </body>
   
</html>

Ele gera a seguinte saída

Ícones personalizados de marcadores

Em vez do ícone padrão fornecido pela biblioteca de folhetos, você também pode adicionar seu próprio ícone. Você pode usar as seguintes etapas para adicionar um ícone personalizado ao mapa, em vez do padrão.

Step 1 - Crie um Mapobjeto passando um elemento < div > (String ou objeto) e opções de mapa (opcional).

Step 2 - Crie um Layer objeto passando a URL do bloco desejado.

Step 3 - Adicione o objeto de camada ao mapa usando o addLayer() método do Map classe.

Step 4 - Crie uma variável para markerOptions e especificar valores para as opções necessárias -

  • iconUrl - Como um valor para esta opção, você precisa passar um String objeto que especifica o caminho da imagem que você deseja usar como um ícone.

  • iconSize - Usando esta opção, você pode especificar o tamanho do ícone.

Note - Além desses, você também pode definir valores para outras opções, como iconSize, shadowSize, iconAnchor, shadowAnchor e popupAnchor.

Crie um ícone personalizado usando L.icon() passando a variável options acima conforme mostrado abaixo.

// Icon options
var iconOptions = {
   iconUrl: 'logo.png',
   iconSize: [50, 50]
}

// Creating a custom icon
var customIcon = L.icon(iconOptions);

Step 5- Crie uma variável para markerOptions e especifique valores para as opções necessárias. Além disso, especifique o ícone passando a variável de ícone criada na etapa anterior como um valor.

// Options for the marker
var markerOptions = {
   title: "MyLocation",
   clickable: true,
   draggable: true,
   icon: customIcon
}

Step 6 - Instancie o Marker classe passando em um latlng objeto que representa a posição a ser marcada e o objeto de opções criado na etapa anterior.

// Creating a marker
var marker = L.marker([17.438139, 78.395830], markerOptions);

Step 7 - Finalmente, adicione o Marker objeto criado nas etapas anteriores para o mapa usando o addTo() método do Marker classe.

Exemplo

O código a seguir define o marcador na localização do Tutorialspoint. Aqui, estamos usando o logotipo do Tutorialspoint em vez do marcador padrão.

<!DOCTYPE html>
<html>
   <head>
      <title>Marker Custom Icons Example</title>
      <link rel = "stylesheet" href = "http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css"/>
      <script src = "http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
   </head>
   
   <body>
      <div id = "map" style = "width:900px; height:580px"></div>
      <script>
         // Creating map options
         var mapOptions = {
            center: [17.438139, 78.395830],
            zoom: 10
         }
         // Creating a map object
         var map = new L.map('map', mapOptions);
         
         // Creating a Layer object
         var layer = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');

         // Adding layer to the map
         map.addLayer(layer);
         
         // Icon options
         var iconOptions = {
            iconUrl: 'logo.png',
            iconSize: [50, 50]
         }
         // Creating a custom icon
         var customIcon = L.icon(iconOptions);
         
         // Creating Marker Options
         var markerOptions = {
            title: "MyLocation",
            clickable: true,
            draggable: true,
            icon: customIcon
         }
         // Creating a Marker
         var marker = L.marker([17.438139, 78.395830], markerOptions);
         
         // Adding popup to the marker
         marker.bindPopup('Hi welcome to Tutorialspoint').openPopup();
         
         // Adding marker to the map
         marker.addTo(map);
      </script>
   </body>
   
</html>

Ele gera a seguinte saída