13

when i used the sencha touch2.2.1,i met a question. In the viewer:

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

In the controller:

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

report the error:

Uncaught InvalidValueError: setMap: not an instance of Map, and not an instance of StreetViewPanorama

I can see the map,but i can't see the marker, and how to solve the problem?

Martijn
  • 15,791
  • 4
  • 36
  • 68
user2996645
  • 131
  • 1
  • 1
  • 4

7 Answers7

18

Try this:

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

It worked for me!

Chris
  • 185
  • 1
  • 8
5

map is not an instance of 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);
Vishal Tanna
  • 1,165
  • 2
  • 12
  • 36
zizoujab
  • 7,603
  • 8
  • 41
  • 72
2

You can add the marker to the map directly by using the marker's setMap() method, as shown in the example below:

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);
Aman
  • 642
  • 1
  • 5
  • 12
1

var map is a HTML element you need an instance of the google.maps.Map Object

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

then....

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

The marker.setMap method expects the argument to be a google.maps.Map object. This is not one of those:

var map= Ext.getCmp('mapCanvas');
geocodezip
  • 158,664
  • 13
  • 220
  • 245
0

Try this:

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

Here map is the rendered google.map.Map instance

Anand Gupta
  • 5,640
  • 3
  • 27
  • 37
0

mapCanvas is Ext map component which holds the map instance.

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());
koti bajjuri
  • 81
  • 1
  • 4