2013-11-15 8 views
9

kiedy użyłem sencha touch2.2.1, spotkałem się z pytaniem. W przeglądarce:Uncaught InvalidValueError: setMap: nie jest instancją mapy

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

W regulatorze:

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

raportu błędu:

Uncaught InvalidValueError: setMap: nie instancją mapą, a nie instancją StreetViewPanorama

Widzę mapę, ale nie widzę znacznika i jak rozwiązać problem?

Odpowiedz

0

Metoda marker.setMap oczekuje, że argument będzie obiektem google.maps.Map. To nie jest jeden z tych:

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

Spróbuj tego:

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

Tutaj map jest renderowane google.map.Map instancja

13

Spróbuj tego:

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

on pracował dla mnie!

+2

jaka jest różnica między mapą zestawu a mapą? – Notflip

+0

Pracowałem też dla mnie ... –

+0

Jip, mogę potwierdzić, że to zadziałało również dla mnie ... ale nie mam pojęcia, dlaczego? Więcej informacji byłoby świetnie! –

5

map nie jest instancją mapy google.

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 to składnik mapy zewnętrznej, który przechowuje instancję mapy.

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 mapa jest elementem HTML trzeba instancję google.maps.Map Object

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

potem ....

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

Możesz dodać znacznik mapę bezpośrednio przy użyciu metody setMap() markera, jak pokazano w poniższym przykładzie:

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); 
Powiązane problemy