当我使用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的实例
我可以看到地图,但我看不到标记,以及如何解决问题?
答案 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());