我有一个工具栏按钮,点击后应该将我的地图更新到我当前的位置。我无法找到这个功能的工作示例,并希望有人可以建议我。请参阅下面的示例代码 - 感谢您的帮助
地图:
Ext.define('MyApp.view.Myap', {
extend: 'Ext.Map',
alias: 'widget.mymap',
config: {
useCurrentLocation: false,
mapOptions:{
zoom: 9,
center: new google.maps.LatLng(42.2, -72.5),
mapTypeId: google.maps.MapTypeId.ROADMAP
},
listeners: {
maprender : function(comp, map){
google.maps.event.addListenerOnce(map, "idle", function () {
var host = window.location.origin ? window.location.origin : window.location.protocol + "/" + window.location.host;
var kmlOptions = {preserveViewport: false}
var now = +new Date();
var layer = new google.maps.KmlLayer(host + '/path/to.kml?timestamp=' + now, kmlOptions);
layer.setMap(map);
return layer;
});
},
}
},
})
工具栏按钮:
Ext.define('MyApp.view.btnLocateMe', {
extend: 'Ext.Button',
alias: 'widget.btnlocateme',
config: {
ui: 'normal',
iconCls: 'locate',
iconMask: true,
text: 'Locate Me',
listeners: [
{
fn: 'onButtonTap',
event: 'tap'
}
]
},
onButtonTap: function(button, e, options) {
//Produces error: cannot call method of undefined
currentLocation: new google.maps.LatLng(this._geo.getLatitude(), this._geo.getLongitude());
MyApp.view.MyMap.map.setCenter(currentLocation);
}
});
答案 0 :(得分:0)
我有一个建议。
尝试将当前位置更改为
new google.maps.LatLng( this.geo.getLatitude(),this.geo.getLongitude() ) ;
我认为您可以在here中收集此问题的更多信息。
答案 1 :(得分:0)
我的两分钱贡献,试试这个
1)在MyApp.view.Myap替换
中useCurrentLocation: false,
通过
useCurrentLocation : { autoUpdate : false },
此外,您应该将currentLocation声明为变量(我推测)
var currentLocation = ...
这应该有效。我在onButtonTap中使用了与你相似的逻辑但是在没有问题的控制器里面
祝你好运
答案 2 :(得分:-2)
最简单的方法 - 在配置
中设置选项 useCurrentLocation : true 切换到另一个地图视图