/** * */Ext.define('Ext.BingMap', { extend: 'Ext.Map', xtype : 'bingmap', requires: ['Ext.util.Geolocation'], /** * @private */ initMap: function() { var map = this.getMap(); if(!map) { var me = this, element = me.mapContainer, mapOptions = me.getMapOptions(), event; var MM = Microsoft.Maps; var key = "AokX-S2lieXTaXG8pvEw3i2AKYuStBMK8RsUu6BDJ6hrL5AYv0IfQqM9zc-BAA-v"; //TODO Investigate why does merge lead to exception in Bing mapOptions = Ext.merge({ credentials: key, mapTypeId: "r", zoom: 12 }, mapOptions); // This is done separately from the above merge so we don't have to instantiate // a new LatLng if we don't need to if (!mapOptions.center) { mapOptions.center = new MM.Location(37.381592, -122.135672); // Palo Alto } if (element.dom.firstChild) { Ext.fly(element.dom.firstChild).destroy(); } MM.loadModule('Microsoft.Maps.Overlays.Style', { callback: function () { me.setMap(new MM.Map(element.dom,mapOptions)); if(mapOptions.callback){ mapOptions.callback(); } } }); map = me.getMap(); } //Track zoomLevel and mapType changes // event = MM.event; //TODO Investigate how to add listeners in Bing // event.addListener(map, 'zoom_changed', Ext.bind(me.onZoomChange, me)); // event.addListener(map, 'maptypeid_changed', Ext.bind(me.onTypeChange, me)); // event.addListener(map, 'center_changed', Ext.bind(me.onCenterChange, me)); me.fireEvent('maprender', me, map); }, setMapCenter: function(coordinates) { var me = this, map = me.getMap(), MM = Microsoft.Maps; if (!me.isPainted()) { me.un('painted', 'setMapCenter', this); me.on('painted', 'setMapCenter', this, { delay: 150, single: true, args: [coordinates] }); return; } coordinates = coordinates || new MM.Location(37.381592, -122.135672); if (coordinates && !(coordinates instanceof MM.Location) && 'longitude' in coordinates) { coordinates = new MM.Location(coordinates.latitude, coordinates.longitude); } if (!map) { me.initMap(); map = me.getMap(); } if (map && coordinates instanceof MM.Location) { map.updateMapPosition(coordinates); } else { this.options = Ext.apply(this.getMapOptions(), { center: coordinates }); } }}, function() { });