street_view.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /**
  2. * @ngdoc service
  3. * @name StreetView
  4. * @description
  5. * Provides [defered/promise API](https://docs.angularjs.org/api/ng/service/$q) service
  6. * for [Google StreetViewService](https://developers.google.com/maps/documentation/javascript/streetview)
  7. */
  8. ngMap.service('StreetView', ['$q', function($q) {
  9. return {
  10. /**
  11. * Retrieves panorama id from the given map (and or position)
  12. * @memberof StreetView
  13. * @param {map} map Google map instance
  14. * @param {LatLng} latlng Google LatLng instance
  15. * default: the center of the map
  16. * @example
  17. * StreetView.getPanorama(map).then(function(panoId) {
  18. * $scope.panoId = panoId;
  19. * });
  20. * @returns {HttpPromise} Future object
  21. */
  22. getPanorama : function(map, latlng) {
  23. latlng = latlng || map.getCenter();
  24. var deferred = $q.defer();
  25. var svs = new google.maps.StreetViewService();
  26. svs.getPanoramaByLocation( (latlng||map.getCenter), 100, function (data, status) {
  27. // if streetView available
  28. if (status === google.maps.StreetViewStatus.OK) {
  29. deferred.resolve(data.location.pano);
  30. } else {
  31. // no street view available in this range, or some error occurred
  32. deferred.resolve(false);
  33. //deferred.reject('Geocoder failed due to: '+ status);
  34. }
  35. });
  36. return deferred.promise;
  37. },
  38. /**
  39. * Set panorama view on the given map with the panorama id
  40. * @memberof StreetView
  41. * @param {map} map Google map instance
  42. * @param {String} panoId Panorama id fro getPanorama method
  43. * @example
  44. * StreetView.setPanorama(map, panoId);
  45. */
  46. setPanorama : function(map, panoId) {
  47. var svp = new google.maps.StreetViewPanorama(map.getDiv(), {enableCloseButton: true});
  48. svp.setPano(panoId);
  49. }
  50. }; // return
  51. }]);