Angular-google-maps: rótulos de marcadores

Criado em 11 mai. 2016  ·  27Comentários  ·  Fonte: SebastianM/angular-google-maps

Alguma maneira de adicionar rótulos a marcadores como este?

image

stale discussion / question feature-request

Comentários muito úteis

aqui está uma solução alternativa, a partir da documentação da API do Google Maps, o rótulo pode ser uma string ou uma especificação de objeto MarkerLabel, então, em vez de usar string para rótulo, especifique o objeto MarkerLabel e insira-o como uma variável, por exemplo
`let markerLabelObject = {
cor vermelha",
fontFamily: "monospace",
fontSize: "13",
fontWeight: "100",
text: element.names

     }

    this.markers.push({
      lat: element.latitude,
      label:markerLabelObject,
      lng: element.longitude,`

Todos 27 comentários

@ssypi Acho que não é possível agora com o conjunto de recursos fornecido. Você pode fornecer alguns trechos de código disso? Então podemos pensar em como isso pode ser resolvido

Também estou pesquisando isso, além de alterar o ícone do alfinete !!!

@SebastianM Ainda não tive tempo suficiente para me aprofundar neste problema, mas uma possibilidade seria usar o markerwithlabel da google-maps-utility-library (sources e docs / examples) ou esta bifurcação . À primeira vista, parece bastante simples de usar, embora precise de uma referência ao mapa.

@ brian-singer o ícone de pino pode ser alterado definindo a propriedade iconUrl na diretiva do marcador https://angular-maps.com/docs/api/latest/ts/core/SebmGoogleMapMarker-directive.html

Certo, iconUrl fez o truque. @alexweber obrigado

InfoWindow não pode ser estilizado, se você precisar de uma janela de informações personalizada, o plug-in infobox do google maps deve ser usado.
https://github.com/googlemaps/v3-utility-library/blob/master/infobox/src/infobox.js

Implementação em meu projeto:

screen shot 2016-07-08 at 18 40 56

Além disso, para estilizar o marcador e adicionar um rótulo personalizado, deve-se usar a biblioteca "markerwithlabel" do Google Maps.
https://github.com/googlemaps/v3-utility-library/blob/master/markerwithlabel/src/markerwithlabel.js

screen shot 2016-07-08 at 18 40 10

Implementei isso no angular1 e no Google Maps nativo, mas não sei como implementar a mesma lógica com o angular2 e este plugin. Ou devo usar googlemaps api diretamente como no angular1?

@ ddctd143 Você provavelmente pode conseguir isso usando um componente / diretiva personalizado colocado dentro do mapa ou componente do marcador, como mencionado aqui: https://github.com/SebastianM/angular2-google-maps/issues/307#issuecomment -229084829

Eu integrei a solução acima em um Plunkr para o Mapa Estilizado:

https://plnkr.co/edit/rv6udUOEedMxJejEpIW1

Mas ainda não descobri como fazer o mesmo com o marcador, pois também preciso do rótulo com ele. Quando eu uso a diretiva de marcador estilizado, não sei se posso obter a instância do marcador.

@alexjeen Você pode postar seu problema no stackoverflow? Alguns meses atrás, reescrevi meu código para trabalhar com esta biblioteca e o Google Maps. Eu responderia sua pergunta.

Estou tentando implementar MarkerWithLabel seguindo @ ddctd143 resposta em stackoverflow, mas obtendo um erro não definido do google em markerwithlabel.js. Alguém sabe como consertar isso?

@bibr Você deve importá-lo como um

@bibr , você conseguiu fazer isso funcionar?

@ ryan-morris sim, eu preciso carregar o mapa antes do marker.js, então em index.html eu adicionei isso

window.onload = function() {
        var s = document.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'assets/js/marker.js';
        var x = document.getElementsByTagName('script')[0];
        x.parentNode.insertBefore(s, x);
    }

@bibr @ ddctd143 Obtendo erro Zona: angular; Valor: ReferenceError: MarkerWithLabel não é definido quando estou usando o novo MarkerWithLabel. Alguma ideia de como posso resolver isso?
`import {Directive, OnInit} from '@ angular / core';
importe {GoogleMapsAPIWrapper} de 'angular2-google-maps / core';
import "../scripts/markerwithlabel.js";

declara const Marker WithLabel: any;

@Directive ({
seletor: 'markerlabel-Directive'
})

export class MarkerLabelDirective implementa OnInit {

private map: any;
constructor(private gmapsApi: GoogleMapsAPIWrapper) {}
ngOnInit() {
this.gmapsApi.getNativeMap().then(map => {
  // instance of the map.
  this.map = map;
  this.initMap();
});

}

initMap () {
var latLng = new google.maps.LatLng (49.47805, -123.84716);
var homeLatLng = new google.maps.LatLng (49.47805, -123.84716);

 var marker1 = new MarkerWithLabel({
   position: homeLatLng,
   draggable: true,
   raiseOnDrag: true,
   map: this.map,
   labelContent: "$425K",
   labelAnchor: new google.maps.Point(22, 0),
   labelStyle: {opacity: 0.75}
 });

 var marker2 = new MarkerWithLabel({
   position: new google.maps.LatLng(49.475, -123.84),
   draggable: true,
   raiseOnDrag: true,
   map: this.map,
   labelContent: "$395K",
   labelAnchor: new google.maps.Point(22, 0),
   labelStyle: {opacity: 1.0}
 });

 var iw1 = new google.maps.InfoWindow({
   content: "Home For Sale"
 });
 var iw2 = new google.maps.InfoWindow({
   content: "Another Home For Sale"
 });
 google.maps.event.addListener(marker1, "click", function (e) { iw1.open(this.map, this); });
 google.maps.event.addListener(marker2, "click", function (e) { iw2.open(this.map, this); });

}
} `

alguma atualização?

aqui está uma solução alternativa, a partir da documentação da API do Google Maps, o rótulo pode ser uma string ou uma especificação de objeto MarkerLabel, então, em vez de usar string para rótulo, especifique o objeto MarkerLabel e insira-o como uma variável, por exemplo
`let markerLabelObject = {
cor vermelha",
fontFamily: "monospace",
fontSize: "13",
fontWeight: "100",
text: element.names

     }

    this.markers.push({
      lat: element.latitude,
      label:markerLabelObject,
      lng: element.longitude,`

Sim por favor. MarkerWithLabel parece ser o caminho a percorrer.
https://stackoverflow.com/questions/32467212/google-maps-marker-label-with-multiple-characters

@nelsonBlack O tamanho do marcador aumenta para você? Não é para mim, então não é muito útil.

@Ammueliza você conseguiu fazer funcionar?

Adicionada solicitação de pull com esta funcionalidade

1392

Este problema foi marcado automaticamente como obsoleto porque não teve atividades recentes. Ele será fechado se nenhuma outra atividade ocorrer. Obrigado por suas contribuições.

Tentei implementar isso agora e falhei. Ou eu entendi algo errado ou isso não faz parte da versão mais recente (1.0.0-beta.5)?
ERROR in: Não é possível vincular a 'markerWithLabel', pois não é uma propriedade conhecida de 'agm-marker'.
Tanto quanto eu entendo o código no PR, preciso definir isso como 'verdadeiro'.

Eu tentei com:
Angular 7 (ainda não é oficialmente compatível com a versão mais recente)
@ agm /
[email protected]

Alguém pode me dizer como fazer isso funcionar, por favor?

@pueaau estava tentando fazer isso funcionar, mas os caminhos estão todos aumentados https://www.npmjs.com/package/@ajqua/marker -with-label

Criou um novo repo com os caminhos corretos
https://github.com/braxtondiggs/marker-with-label

Este problema foi marcado automaticamente como obsoleto porque não teve atividades recentes. Ele será fechado se nenhuma outra atividade ocorrer. Obrigado por suas contribuições.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

matishw picture matishw  ·  3Comentários

PeterSisovsky picture PeterSisovsky  ·  3Comentários

vamsibassetty08 picture vamsibassetty08  ·  3Comentários

stot3 picture stot3  ·  3Comentários

Subhojit1992 picture Subhojit1992  ·  3Comentários