12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /**
- * @ngdoc service
- * @name StreetView
- * @description
- * Provides [defered/promise API](https://docs.angularjs.org/api/ng/service/$q) service
- * for [Google StreetViewService](https://developers.google.com/maps/documentation/javascript/streetview)
- */
- ngMap.service('StreetView', ['$q', function($q) {
- return {
- /**
- * Retrieves panorama id from the given map (and or position)
- * @memberof StreetView
- * @param {map} map Google map instance
- * @param {LatLng} latlng Google LatLng instance
- * default: the center of the map
- * @example
- * StreetView.getPanorama(map).then(function(panoId) {
- * $scope.panoId = panoId;
- * });
- * @returns {HttpPromise} Future object
- */
- getPanorama : function(map, latlng) {
- latlng = latlng || map.getCenter();
- var deferred = $q.defer();
- var svs = new google.maps.StreetViewService();
- svs.getPanoramaByLocation( (latlng||map.getCenter), 100, function (data, status) {
- // if streetView available
- if (status === google.maps.StreetViewStatus.OK) {
- deferred.resolve(data.location.pano);
- } else {
- // no street view available in this range, or some error occurred
- deferred.resolve(false);
- //deferred.reject('Geocoder failed due to: '+ status);
- }
- });
- return deferred.promise;
- },
- /**
- * Set panorama view on the given map with the panorama id
- * @memberof StreetView
- * @param {map} map Google map instance
- * @param {String} panoId Panorama id fro getPanorama method
- * @example
- * StreetView.setPanorama(map, panoId);
- */
- setPanorama : function(map, panoId) {
- var svp = new google.maps.StreetViewPanorama(map.getDiv(), {enableCloseButton: true});
- svp.setPano(panoId);
- }
- }; // return
- }]);
|