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のインスタンスでもありません
地図は表示されますが、マーカーが表示されません。問題を解決するにはどうすればよいですか。
これを試して:
marker = new google.maps.Marker({
position : position,
setMap : map
});
それは私のために働いた!
map
は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);
次の例に示すように、マーカーの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);
var mapは、google.maps.Mapオブジェクトのインスタンスが必要なHTML要素です
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
});
これを試して:
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
インスタンス
marker.setMap
メソッドは、引数がgoogle.maps.Mapオブジェクトであると想定しています。これはそれらの1つではありません。
var map= Ext.getCmp('mapCanvas');
mapCanvasは、マップインスタンスを保持するExtマップコンポーネントです。
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());