Pergunta

Eu estou usando jquery-ui-mapa para criar um Google Maps exemplo como este:

$('#CHMap').gmap({
  mapTypeControl : false
}).bind('init', function(evt, map) {
  log("Map initilised");
});

Em seguida em outros lugares no script que eu estou usando InfoBox para adicionar algum estilo-capaz de informações caixas preenchidas com dados puxado para trás a partir de um serviço de geolocalização, como por exemplo:

var boxText = document.createElement("div");
var ib = new InfoBox(myOptions); //myOptions can be ignored for this example

$.each(data, function(name, value) {
  $('#CHMap').gmap('addMarker', {
    id:value['YourId'],
    'position': value['Latitude']+','+value['Longitude'],
    'bounds': true,
    'icon': '/img/gicon.png'
  }).click(function() {
    boxText.innerHTML = "hello";
    ib.setContent(boxText);
    ib.open(map, this);
  });
});

'dados' é um objeto retornado do serviço de Geolocalização.Se eu colocar o acima 'addMarker' código dentro do dependente 'init' função quando o gmap é criado pela primeira vez, a infoBox exibe bem.Quando eu uso o "addMarker' código em qualquer lugar, eu fico "Uncaught ReferenceError:o mapa não está definido" erro no console.

Como posso referência o 'mapa' corretamente?Parece que eu não posso fazer var map = $('#CHMap').gmap({//options}); como o "jquery-ui-mapa' docs sugerem que gmap não retorna nada.

Foi útil?

Solução

Eu acho que você pode fazer

var map = $('#CHMap').gmap();

Nota do OP.A maneira correta no mais recente do plugin:

var map = $('#CHMap').gmap('get', 'map');

Não estou a ver onde ele está dizendo que não retorna nada na API

quando você precisa para executar acessar o mapa, você pode adicionar o código dentro de um google maps ouvinte de evento que aguarda até que o mapa de tiles são carregados como este.

Como Feitos é obtida assíncrona do google, você não pode sempre ter certeza de que ele vai estar lá quando você chamá-lo, a menos que você faça algo assim.

google.maps.event.addListener(YOUR_GOOGLE_MAPS_INSTACE, 'tilesloaded', function() {
       // put your initialization code in here.
}

Portanto, ele só será executado depois que o google maps está completamente carregado.

Cheers do Brasil !

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top