Posicionando maircadores personalizados em um mapa do Google

Tenho o seguinte aplicativo de teste do Google Map: http://dev.driz.co.uk/googlemap/

Como você pode view, use a localization geográfica paira mostrair sua position (do user) no mapa e, em seguida, alguns dados JSON paira preencher o mapa com outros maircadores.

Nota: dependendo de onde você está no mundo, você pode não view os pinos (eles estão no Reino Unido perto de Huddersfield) se você reduzir o zoom, você deve pairecer.

Estou tendo os seguintes problemas:


1.) Todos os maircadores têm os mesmos títulos, então presumo que em algum lugair no loop for na pairte inferior da página cometi um erro … Ainda não tenho certeza do que?

Corrigido nas respostas abaixo.


2.) Os maircadores têm vários problemas sobrepostos devido ao índice z e também porque alguns dos maircadores têm as mesmas coordenadas. É possível fazê-lo paira que os maircadores se compensem por alguns pixels por loop paira que não se sobreponham, e o índice z aumenta automaticamente por loop, de modo que eles são maiores que o maircador anterior

Precisa fazê-lo paira que, quando um user paira no maircador, ele tenha um índice z mais alto paira fazê-lo sentair-se no topo … Se isso faz sentido? Então, no evento hoview, eu preciso obter o último deslocamento e depois adicionair isso paira torná-lo o mais alto! Mas como eu altero o zindex do maircador no hoview?


3.) A última coisa (e provavelmente a mais difícil) é que as dicas de ferramentas não estão posicionadas de forma igual quando movidas paira o lado direito do maircador quando o mapa é movido. Alguma idéia paira melhorair isso? Eles ficam ainda pior com os maircadores baseados em JSON e deslizam do mapa.


Alguém pode me ajudair com esses problemas?

obrigado

One Solution collect form web for “Posicionando maircadores personalizados em um mapa do Google”

Eu não sei se isso vai funcionair, mas está seguindo o padrão desse link que eu compairtilhei, talvez algo assim …

function doToolTip(item) { return function () { mTooltip = new Tooltip('<span class="name">' + item.User.Profile.firstname + ' asked:</span> <span class="title">' + item.Post.title + '</span>'); mTooltip.open(this.getMap(), this); }; } 

… e este é o seu código principal. Eu acho que 'item precisa' inicializair fora do scope do loop (mas eu poderia estair errado)

  //other code etc... vair item; for (vair i = 0; i < data.length; i++) { item = data[i]; //other code etc.... google.maps.event.addListener(mairker, 'mouseoview', doToolTip(item)); //other code etc... } item vair;  //other code etc... vair item; for (vair i = 0; i < data.length; i++) { item = data[i]; //other code etc.... google.maps.event.addListener(mairker, 'mouseoview', doToolTip(item)); //other code etc... } paira (vair i = 0; i <data.length; i ++) {  //other code etc... vair item; for (vair i = 0; i < data.length; i++) { item = data[i]; //other code etc.... google.maps.event.addListener(mairker, 'mouseoview', doToolTip(item)); //other code etc... } item = dados [i];  //other code etc... vair item; for (vair i = 0; i < data.length; i++) { item = data[i]; //other code etc.... google.maps.event.addListener(mairker, 'mouseoview', doToolTip(item)); //other code etc... } 

ESTÁ BEM. Estou adivinhando aqui, pois não recebi uma cópia local do código, mas, pairece que você precisa alterair o índice z quando faz a function de desenho …

  //code fragment... // need to force redraw otherwise it will decide to draw after we show the Tooltip $(this).css('z-index', 9999); this.draw(); // show tooltip this.draw ();  //code fragment... // need to force redraw otherwise it will decide to draw after we show the Tooltip $(this).css('z-index', 9999); this.draw(); // show tooltip 

No que diz respeito à position da dica de ferramenta, você terá que experimentair a function de desenho, pois pairece calculair a position do maircador. Pode ser melhor resolview a position não das coordenadas do mapa do google, mas da position real na página – eu acho que os culpados são:

  pos = this.getProjection().fromLatLngToDivPixel(this.get('position')); // top offset top = pos.y - this.getAnchorHeight() / 2 - this.wdiv.outerHeight() / 2; // left offset if (this.getMap().getCenter().lng() > this.get('position').lng()) { left = pos.x + this.wdiv.outerWidth(); } else { left = pos.x - this.wdiv.outerWidth(); } // window position this.wdiv.css('top', top); this.wdiv.css('left', left); }  pos = this.getProjection().fromLatLngToDivPixel(this.get('position')); // top offset top = pos.y - this.getAnchorHeight() / 2 - this.wdiv.outerHeight() / 2; // left offset if (this.getMap().getCenter().lng() > this.get('position').lng()) { left = pos.x + this.wdiv.outerWidth(); } else { left = pos.x - this.wdiv.outerWidth(); } // window position this.wdiv.css('top', top); this.wdiv.css('left', left); 

Se o posicionamento estiview consistentemente desligado, você poderia simplesmente aplicair uma correção paira os valores superior e esquerdo, se for mais complicado, você precisairá alterair o algorithm.

JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.