Domanda

Sto usando jquery-ui-map aCrea un'istanza di Google Maps come questa:

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

Allora altrove in script sto usando Infobox per aggiungere alcune caselle di informazioni in grado di stile riempito con dati tirati indietro da un servizio di geolocalizzazione come:

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);
  });
});
.

'Data' è un oggetto restituito dal servizio di geolocalizzazione.Se inserisco il codice "aggiuntivo" di cui sopra all'interno della funzione "Init" rilegata quando viene creato la GMAP, l'INFOBOX viene visualizzato bene.Quando uso il codice 'aggiunto' del codice altrove, ottengo "Uncaught ReferenceError: Mappa non è definito" Errore in console.

Come posso fare riferimento alla "mappa" correttamente?Sembra che non possa fare var map = $('#CHMap').gmap({//options}); come i documenti "jquery-ui-map" suggeriscono che Gmap non ritorna nulla.

È stato utile?

Soluzione

Penso che tu possa fare

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

Nota da op.Il modo corretto nell'ultimo plugin è:

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

Non vedo dove sta dicendo che non ritorna nulla nell'aPI

Quando è necessario eseguire l'accesso alla mappa è possibile aggiungere il codice all'interno di un listener di eventi di Google Maps che attende fino a quando le tessere della mappa sono caricate come questa.

AS Gmaps è recuperato Async da Google Non puoi sempre essere sicuro che sarà lì quando lo chiamerai a meno che tu non faccia qualcosa del genere.

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

Quindi si eseguerà solo dopo che le mappe sono completamente caricate.

Cheers dal Brasile!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top