Skip to content

Commit

Permalink
Merge pull request #182 from ResidenciaTICBrisa/marcador
Browse files Browse the repository at this point in the history
Feature: Adição do marcador personalizado dentro dos mapas do plugin
  • Loading branch information
Max-Rohrer20 authored Jul 2, 2024
2 parents 606ee0c + a33abb0 commit 72f95d9
Show file tree
Hide file tree
Showing 2 changed files with 101 additions and 114 deletions.
96 changes: 42 additions & 54 deletions lgbtq_connect/assets/js/script.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,30 @@
let pagina = null;

// CLASSES
// Definindo o ícone personalizado no escopo global
var personalIcon = L.icon({
iconUrl: 'https://res.cloudinary.com/dxsx0emuu/image/upload/f_auto,q_auto/lc_marker',
iconSize: [20, 30], // tamanho do ícone
popupAnchor: [1, -10]
});

// CLASSES
class Mapa {
container;

static MAPAS = {
"div_index" : "mapa_index",
"div_form" : "mapa_formulario",
"div_saida" : "mapa_saida"
"div_index": "mapa_index",
"div_form": "mapa_formulario",
"div_saida": "mapa_saida"
}

constructor(container) {
this.container = Mapa.MAPAS[container];
this.mapa = L.map(this.container, { doubleClickZoom: false }).setView([-15.8267, -47.9218], 13);

L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(this.mapa);

this.marcadores = [];
}

Expand All @@ -35,8 +42,8 @@ class Mapa {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
let user_position = [];
user_position.push(position.coords.latitude);
user_position.push(position.coords.longitude);
user_position.push(position.coords.latitude);
user_position.push(position.coords.longitude);
self.mudarLocalizacao(user_position);
});
} else {
Expand All @@ -47,7 +54,7 @@ class Mapa {
}

destruirMapa() {
this.mapa.remove()
this.mapa.remove();
this.mapa = null;
}
}
Expand All @@ -58,7 +65,6 @@ class Pagina {
this.id = id;
this.div = document.getElementById(id);
this.mapa = null;

}

inicializar() {
Expand All @@ -68,8 +74,7 @@ class Pagina {
}

destruir() {
if(this.mapa !== null)
{
if (this.mapa !== null) {
this.mapa.destruirMapa();
}
this.div.style.display = "none";
Expand All @@ -80,18 +85,17 @@ class PaginaComPopup extends Pagina {
inicializar() {
super.inicializar();

for(var i = 0; i<formularios_aprovados.length; i++)
{
for (var i = 0; i < formularios_aprovados.length; i++) {
var formulario = formularios_aprovados[i];
var popupConteudo = `
<div class="pop">
<h4><strong>${formulario.nome}</strong></h4>
<i>${formulario.servico}</i>
<div class="gradiente"></div>
<p><strong>${formulario.descricao}</strong></p>
</div>
`;
this.mapa.adicionarMarcador(L.marker([formulario.latitude, formulario.longitude]).bindPopup(popupConteudo));
<div class="pop">
<h4><strong>${formulario.nome}</strong></h4>
<i>${formulario.servico}</i>
<div class="gradiente"></div>
<p><strong>${formulario.descricao}</strong></p>
</div>
`;
this.mapa.adicionarMarcador(L.marker([formulario.latitude, formulario.longitude], { icon: personalIcon }).bindPopup(popupConteudo));
}
}

Expand All @@ -101,18 +105,14 @@ class PaginaComPopup extends Pagina {
}

class PaginaFormulario extends Pagina {

inicializar() {
super.inicializar();
this.marcador = null;
var self = this;
this.mapa.mapa.on('click', function(e) {

if(self.marcador==null)
{
self.marcador = L.marker(e.latlng).addTo(self.mapa.mapa);
this.mapa.mapa.on('click', function (e) {
if (self.marcador == null) {
self.marcador = L.marker(e.latlng, { icon: personalIcon }).addTo(self.mapa.mapa);
}

self.marcador.setLatLng(e.latlng);

var lat = e.latlng.lat; // Latitude
Expand All @@ -121,7 +121,7 @@ class PaginaFormulario extends Pagina {
// Atualiza os valores dos campos de entrada ocultos
document.getElementById('latitude').value = lat;
document.getElementById('longitude').value = lng;
})
});

this.mapa.mapa.on('contextmenu', function (e) {
// Verifica se existe um marcador atual
Expand All @@ -134,10 +134,9 @@ class PaginaFormulario extends Pagina {
}
});

for(var i = 0; i<formularios_aprovados.length; i++)
{
for (var i = 0; i < formularios_aprovados.length; i++) {
var formulario = formularios_aprovados[i];
this.mapa.adicionarMarcador(L.marker([formulario.latitude, formulario.longitude]));
this.mapa.adicionarMarcador(L.marker([formulario.latitude, formulario.longitude], { icon: personalIcon }));
}
}

Expand All @@ -149,45 +148,34 @@ class PaginaFormulario extends Pagina {

// Padrão de projeto Factory Method
class FabricaPagina {

// Map que relaciona strings com classes
static CLASSES = new Map([
['PaginaFormulario', PaginaFormulario],
['PaginaComPopup', PaginaComPopup]
]);
]);

// Método para criar uma nova página e retorná-la
static criar(tipo, id) {
if(!FabricaPagina.CLASSES.has(tipo))
throw new Error("Página inválida")
return new(FabricaPagina.CLASSES.get(tipo))(id);
if (!FabricaPagina.CLASSES.has(tipo))
throw new Error("Página inválida");

return new (FabricaPagina.CLASSES.get(tipo))(id);
}
}

// Função que realiza a transição entre páginas
// Chamada uma vez quando o plugin é inicializado e depois é chamada através de botões nas páginas
function transicaoPagina(tipo, id)
{
function transicaoPagina(tipo, id) {
// Se o plugin já foi inicializado, deleta a página anterior
if(pagina !== null) {
if (pagina !== null) {
pagina.destruir();
}

pagina = FabricaPagina.criar(tipo, id)
pagina = FabricaPagina.criar(tipo, id);
pagina.inicializar();
}

// Inicializa o plugin
window.onload = function () {
transicaoPagina("PaginaComPopup", "div_index");
};

// Exporta as classes
module.exports = {
Mapa,
Pagina,
PaginaComPopup,
PaginaFormulario,
FabricaPagina
};
transicaoPagina("PaginaComPopup", "div_index")
}
Loading

0 comments on commit 72f95d9

Please sign in to comment.