OpenLayers với StreetView Overlay


9

Tôi đang cố gắng thêm chức năng StreetView vào ứng dụng web OpenLayers của mình và muốn thêm lớp phủ hiển thị tính khả dụng của StreetView vào chính bản đồ. Tôi đã thấy một ví dụ về nó được thực hiện thành công ở đây , nhưng tôi không thể lấy mã để làm việc theo giải pháp của riêng mình. Đặc biệt :

var layer = new OpenLayers.Layer.Google("Google Street", {sphericalMercator: true});

layer.mapObject.addOverlay(new GStreetviewOverlay());

dẫn đến lỗi:

layer.mapObject is null

Có ai biết tôi có thể làm gì sai không, và nếu vậy, làm thế nào tôi có thể sửa cái này?

Câu trả lời:


4

Công cụ mở với Streetview

yêu cầu tiện ích mở rộng GeoExt ux

tất cả các mã có sẵn - vì vậy bạn có thể thấy những gì bạn đang thiếu

(nếu bạn có thể đăng một liên kết trực tiếp lên bản đồ hiện tại của mình - người dùng có thể gỡ lỗi cho bạn.)

nhập mô tả hình ảnh ở đây

http://api.geo.admin.ch/main/wsgi/doc/build/api/streetview.html


2
+1 - bản demo này hoạt động. Đó là bởi cùng một tác giả, nhưng gần đây hơn.
geographika

Bạn có biết bất kỳ cách nào khác để sử dụng Lớp phủ StreetView trong OpenLayers mà không cần sử dụng GeoExt không?
CatchingMonkey

Chỉ dành cho Google Maps v2 (không dùng nữa) fuzzytolerance.info/code/ Khóa API API yêu cầu.
Mapperz

GeoAdmin dường như không cung cấp Chế độ xem phố nữa, ví dụ đóng có thể tìm thấy là: gxp.opengeo.org/master/examples/google-streetview-panel.html (OpenLayers + GeoExt)
kryger

2

Để sử dụng các lớp của Google và đáp ứng các yêu cầu cấp phép, bạn phải truy cập các lớp của Google thông qua Google API. Khi bạn thêm một lớp Google vào bản đồ OpenLayers, OpenLayers sẽ tải Google API.

Các layer.mapObject(như trái ngược với layer.mapđó là các đối tượng bản đồ CV) nên cung cấp cho bạn một tham chiếu đến Google Map. Vì đây là nullmột cái gì đó đã sai khi tải Google API. Bạn có thể kiểm tra FireBug nếu nó đã được tải đúng cách.

Ví dụ bạn chỉ ra có thể đang sử dụng API Google 2 cũ hơn là phiên bản 3. Bạn không còn cần khóa API và có thể thêm API Google bằng cách sử dụng:

<script src="http://maps.google.com/maps/api/js?sensor=false"></script>

Hãy xem thử nghiệm đơn vị cho các lớp API Google v3 có thể giúp bạn.

Hãy nhớ StreetView cũng cần Flash trong trình duyệt.


Xin chào, cảm ơn sự giúp đỡ của bạn. Tôi không ở bàn làm việc của mình ngay bây giờ vì vậy tôi sẽ không thể kiểm tra các đề xuất của bạn, nhưng đây là những gì tôi biết: Tôi chắc chắn đang tải API Google Maps v3. Tôi đã triển khai StreetView trong Ứng dụng web trước đây, nhưng lần này tôi cũng đang tìm cách để có lớp phủ trên bản đồ. Tôi tự hỏi nếu nó là một điều trình duyệt. Trang web tôi đã cung cấp một liên kết để hoạt động tốt trong IE (8) nhưng không phải trong Firefox ... có ý tưởng nào không?
CatchingMonkey

Bản demo không hoạt động với tôi trong FF6, IE8 hoặc IE9. Nó dường như chỉ hiển thị bản đồ hoặc chế độ xem phố ..
geographika

Hmmm, trang web dường như hoạt động trong IE8 của tôi ở đây .... sẽ tham khảo danh sách người dùng OpenLayers ngay bây giờ!
CatchingMonkey

1

Lý do tại sao layer.mapObject là null là do thuộc tính mapObject được tạo sau khi lớp đó được thêm vào bản đồ. Thử đi:

var layer = new OpenLayers.Layer.Google("Google Street", {sphericalMercator: true});
map.addLayer(layer);
layer.mapObject.addOverlay(new GStreetviewOverlay());
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.