2010-04-20 4 views
16

변수에 lat 및 lng 변수를 전달하고 google sreet보기를 표시합니다. 문제는 StreetView를 사용할 수 없을 때 아무 것도 표시되지 않는다는 것입니다. 주어진 위도와 경도에 대한 streetview가 있는지 확인하고 메시지를 표시하고 싶습니다. Event.addListener(myPano, "error", errorMessage());Google 스트리트 뷰를 사용할 수 있는지 확인하고 메시지를 표시하는 방법은 무엇인가요?

어떤 아이디어 :

var myPano = new GStreetviewPanorama(document.getElementById("street2"), panoOpts); 
var location = new GLatLng(lat,lng) 
myPano.setLocationAndPOV(location); 

어쩌면 내가 같은 것을 사용한다 : 여기 내 코드는?

+0

허용 된 답변이 변경되어야합니다! –

답변

35

. http://code.google.com/apis/maps/documentation/javascript/reference.html#StreetViewService

에서 문서를 확인 업데이트 된 코드는 다음과 같습니다

var streetViewService = new google.maps.StreetViewService(); 
var STREETVIEW_MAX_DISTANCE = 100; 
var latLng = new google.maps.LatLng(40.7140, -74.0062); 
streetViewService.getPanoramaByLocation(latLng, STREETVIEW_MAX_DISTANCE, function (streetViewPanoramaData, status) { 
    if (status === google.maps.StreetViewStatus.OK) { 
     // ok 
    } else { 
     // no street view available in this range, or some error occurred 
    } 
}); 
+0

이것은 나에게 환상적인 도움이되었습니다. 정말 고맙습니다!!! – jeffkee

+0

'getPanoramaByLocation'은 비동기입니다. 수표의 결과로 원하는 것을 의미하는 것은 콜백 함수로 들어가야합니다. – hitautodestruct

+0

완벽한, 감사합니다. – AhammadaliPK

17

다음과 같은 기준 체크 아웃 할 수 있습니다 :

  • Google Maps API Documentation: Street View Client Querying
  • 이 도로가 GStreetviewOverlay의 육안 검사로 스트리트 뷰를 지원하는지 여부를 판단 종종 가능, 또는에서 바람직하지 않다 사용자의 관점. 이러한 이유로 API는 프로그래밍 방식으로 스트리트 뷰 데이터를 요청하고 검색하는 서비스를 제공합니다. 이 서비스는 GStreetviewClient 개체를 사용하여 쉽게 처리 할 수 ​​있습니다.

은 기본적으로 당신은 당신의 스트리트 뷰 (Street View)를 사용할 수있는 가장 가까운 지점의 GLatLng을 반환합니다 GStreetviewClient 클래스의 getNearestPanoramaLatLng() 방법을 사용할 수 있습니다. 그런 다음 distanceFrom() 메서드를 사용하여 가장 가까운 스트리트 뷰 포인트가 소스 지점의 특정 임계 값 내에 있는지 확인할 수 있습니다. 여기

내가 자명 할 것으로 판단 전체 예이다 :

이 약간 변경된 v3의
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps API - Street View Availability</title> 
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false" 
      type="text/javascript"></script> 
    </head> 
    <body> 
    <script type="text/javascript"> 
     var testPoint = new GLatLng(40.7140, -74.0062); // Broadway, New York 
     var svClient = new GStreetviewClient(); 

     svClient.getNearestPanoramaLatLng(testPoint, function (nearest) { 
      if ((nearest !== null) && (testPoint.distanceFrom(nearest) <= 100)) { 
      alert('Street View Available');    // Within 100 meters 
      } 
      else { 
      alert('Street View Noet Available');  // Not within 100 meters 
      } 
     }); 
    </script> 
    </body> 
</html> 
+0

정말 감사합니다. – Vonder

+2

이 답변은 구식입니다. V3 답변보기 [and docs] (http://code.google.com/apis/maps/documentation/javascript/reference.html#StreetViewService) – hitautodestruct

0

Google지도 자바 스크립트 API의 v3.25 + 업데이트 : v3.25에서 (현재 릴리스 버전) 및 v3.26 (실험 현재 버전), getPanoramaByLocation()은 여전히 ​​사용할 수 있지만 not documented anymore입니다.

아서 - 클레멘스 @

의 허용 대답은 여전히 ​​작동하지만 당신은 더 나은 호환성을 원하는 경우 대신 StreetViewLocationRequestgetPanorama()를 사용

var gstService = new google.maps.StreetViewService(); 

gstService.getPanorama({ 
    location: new google.maps.LatLng(40.7140, -74.0062), 
    source: google.maps.StreetViewSource.OUTDOOR 
}, function (data, status) { 
    if (status === google.maps.StreetViewStatus.OK) { 
     // OK 
    } else { 
     // error or no results 
    } 
}); 
당신이 파노라마 검색에 제한하지 않으려면 StreetViewLocationRequest

생략 source 야외 것들.