2013-11-15 8 views
9

quando ho usato il sencha touch2.2.1, ho incontrato una domanda. Nel visualizzatore:Uncaught InvalidValueError: setMap: non un'istanza di Map

items: [{ 
    id: 'mapCanvas', 
    xtype:'map', 
    useCurrentLocation: true, 
}] 

Nel controllore:

var map= Ext.getCmp('mapCanvas'); 
console.dir(map); 
var marker= new google.maps.Marker({ 
       position: new google.maps.LatLng(25,118), 
      }); 
marker.setMap(map); 

rapporto l'errore:

Uncaught InvalidValueError: setMap: non un'istanza di Map, e non un caso di StreetViewPanorama

Posso vedere la mappa, ma non riesco a vedere l'indicatore e come risolvere il problema?

risposta

0

Il metodo marker.setMap prevede che l'argomento sia un oggetto google.maps.Map. Questo non è uno di quelli:

var map= Ext.getCmp('mapCanvas'); 
0

Prova questo:

var latlngbounds = new google.maps.LatLngBounds(), 
    position = new google.maps.LatLng(25,118), 
    marker = new google.maps.Marker({ 
      position : position, 
      map : map 
     }); 

latlngbounds.extend(position); 

map.fitBounds(latlngbounds); 

Qui map è la resa google.map.Map esempio

13

Prova questo:

marker = new google.maps.Marker({ 
       position : position, 
       setMap : map 
      }); 

Ha funzionato per me!

+2

qual è il differenziale tra setMap e mappa, quindi? – Notflip

+0

Ha funzionato anche per me ... –

+0

Jip, posso confermare che questo ha funzionato anche per me .... ma non ho idea del perché? Altre informazioni sarebbero grandiose! –

5

map non è un'istanza di Google Map.

var map= Ext.getCmp('mapCanvas').getMap(); // add getMap() here to get the map instance 
console.dir(map); 
var marker= new google.maps.Marker({ 
    position: new google.maps.LatLng(25,118), 
}); 
marker.setMap(map); 
0

mapCanvas è il componente di mappa Ext che contiene l'istanza della mappa.

var map= Ext.getCmp('mapCanvas'); 
console.dir(map); 
var marker= new google.maps.Marker({ 
        position: new google.maps.LatLng(25,118), 
       }); 
marker.setMap(map.getMap()); 
1

var mappa è un elemento HTML è necessario un'istanza della google.maps.Map Object

var map = google.maps.Map(document.querySelector("#mapCanvas"),{ 
     center: new google.maps.LatLng(24.027872, -104.655278), 
     zoom: 12 
    }); 

poi ....

var marker= new google.maps.Marker({ 
    position: new google.maps.LatLng(25,118), 
    map: map 
    }); 
1

È possibile aggiungere il marcatore la mappa direttamente utilizzando il metodo setMap() dell'indicatore, come illustrato nell'esempio seguente:

var myLatlng = new google.maps.LatLng(-25.363882,131.044922); 
var mapOptions = { 
    zoom: 4, 
    center: myLatlng 
} 
var map = new google.maps.Map(document.getElementById("map"), mapOptions); 

var marker = new google.maps.Marker({ 
    position: myLatlng, 
    title:"Hello World!" 
}); 

// To add the marker to the map, call setMap(); 
marker.setMap(map); 
Problemi correlati