Uncaught InvalidValueError:setMap:不是Map的实例

时间:2013-11-15 14:57:53

标签: google-maps sencha-touch

当我使用sencha touch2.2.1时,我遇到了一个问题。 在观众中:

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

在控制器中:

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

报告错误:

Uncaught InvalidValueError:setMap:不是Map的实例,而不是StreetViewPanorama的实例

我可以看到地图,但我看不到标记,以及如何解决问题?

7 个答案:

答案 0 :(得分:16)

试试这个:

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

它对我有用!

答案 1 :(得分:5)

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

答案 2 :(得分:2)

您可以使用标记的setMap()方法直接将标记添加到地图中,如下例所示:

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

答案 3 :(得分:1)

var map是一个HTML元素,你需要一个google.maps.Map对象的实例

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

然后...

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

答案 4 :(得分:0)

marker.setMap方法要求参数为google.maps.Map对象。这不是其中之一:

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

答案 5 :(得分:0)

试试这个:

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

此处map是呈现的google.map.Map实例

答案 6 :(得分:0)

mapCanvas是包含地图实例的Ext map组件。

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