2010-04-20 46 views
16

Tôi đang chuyển biến lat và lng và hiển thị chế độ xem google sreet trong div. Vấn đề là khi StreetView là không thể giải quyết thì không có gì được hiển thị. Tôi muốn kiểm tra xem có một streetview cho một lat nhất định và lng và hiển thị một tin nhắn. Đây là mã của tôi:Cách kiểm tra xem Google Street View có sẵn và hiển thị thông báo không?

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

Có lẽ tôi nên sử dụng một cái gì đó như: Event.addListener(myPano, "error", errorMessage());

ý tưởng Bất kỳ?

+0

Câu trả lời được chấp nhận cho điều này sẽ được thay đổi! –

Trả lời

35

Trong v3 này đã thay đổi một chút. Kiểm tra các tài liệu tại http://code.google.com/apis/maps/documentation/javascript/reference.html#StreetViewService

Mã được cập nhật là:

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

Đây là một trợ giúp tuyệt vời cho tôi. Cảm ơn bạn rất nhiều!!! – jeffkee

+0

Hãy nhớ rằng 'getPanoramaByLocation' là không đồng bộ. Có nghĩa là bất cứ điều gì bạn muốn làm như là kết quả của kiểm tra phải đi vào chức năng gọi lại. – hitautodestruct

+0

Tuyệt vời, cảm ơn – AhammadaliPK

17

Bạn có thể muốn kiểm tra các tài liệu tham khảo sau đây:

Xác định liệu một đường hỗ trợ Street View qua sự kiểm tra trực quan của GStreetviewOverlay không phải là thường có tính khả thi, hoặc mong muốn từ quan điểm của người dùng. Vì lý do đó, API cung cấp dịch vụ theo yêu cầu và truy xuất dữ liệu Chế độ xem phố theo chương trình. Dịch vụ này được hỗ trợ thông qua việc sử dụng đối tượng GStreetviewClient.

Về cơ bản, bạn có thể sử dụng phương pháp getNearestPanoramaLatLng() của lớp GStreetviewClient, mà sẽ đưa bạn trở một GLatLng của điểm gần nhất nơi nhìn ra đường phố có sẵn. Sau đó, bạn có thể sử dụng phương pháp distanceFrom() để kiểm tra xem điểm xem phố gần nhất có nằm trong ngưỡng nhất định từ điểm nguồn của bạn hay không.

Đây là một ví dụ đầy đủ, mà tôi tin rằng cần phải tự giải thích:

<!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

Thực sự tốt đẹp, cảm ơn rất nhiều! – Vonder

+2

Câu trả lời này đã lỗi thời. Xem câu trả lời V3 [và tài liệu] (http://code.google.com/apis/maps/documentation/javascript/reference.html#StreetViewService) – hitautodestruct

0

Cập nhật cho Google Maps API Javascript v3.25 +: Trong v3.25 (phiên bản phát hành hiện tại) và v3.26 (hiện tại thực nghiệm phiên bản), getPanoramaByLocation() vẫn có sẵn nhưng not documented anymore.

@ arthur-clemens của chấp nhận câu trả lời vẫn hoạt động, nhưng sử dụng getPanorama() với một StreetViewLocationRequest thay vì nếu bạn muốn khả năng tương thích tốt hơn:

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 
    } 
}); 

Bỏ qua source trong StreetViewLocationRequest nếu bạn không muốn tìm kiếm panorama được giới hạn những người ngoài trời.

Các vấn đề liên quan