Alguma maneira de adicionar rótulos a marcadores como este?
@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:
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
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.
Desde já, obrigado:
http://stackoverflow.com/questions/40087258/angular2-google-maps-style-marker
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 from bower
Example:
<script src="bower_components/google-maps-utility-library-v3-markerwithlabel/dist/markerwithlabel.js"></script>
And to install it with bower use:
"google-maps-utility-library-v3-markerwithlabel": "^1.1.10"
@ ddctd143 Há alguma diferença do que isso
<script src="assets/markerwithlabel.js"></script>
Eu tenho que usar caramanchão?
Parece que este script é carregado antes do mapa. que lança o erro. Estou faltando alguma coisa aqui?
@bibr
O Google Maps deve ir antes.
<script src="https://maps.googleapis.com/maps/api/js?libraries=places,geometry"></script>
<script src="bower_components/google-maps-utility-library-v3-markerwithlabel/dist/markerwithlabel.js"></script>
@ ddctd143
Então vai jogar
You have included the Google Maps API multiple times on this page. This may cause unexpected errors.
uma vez que o google map já está carregado pelo angular2-google-maps
@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
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.
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