OpenLayers Dengan StreetView Overlay

9

Saya mencoba menambahkan fungsionalitas StreetView ke aplikasi web OpenLayers saya, dan ingin menambahkan overlay yang menunjukkan ketersediaan StreetView ke peta itu sendiri. Saya telah melihat contohnya yang berhasil dilakukan di sini , tetapi saya tidak bisa mendapatkan kode untuk bekerja dalam solusi saya sendiri. Secara khusus:

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

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

mengakibatkan kesalahan:

layer.mapObject is null

Adakah yang tahu apa yang mungkin saya lakukan salah, dan jika demikian, bagaimana saya bisa memperbaikinya?

CatchingMonkey
sumber

Jawaban:

4

Openlayers dengan Streetview

membutuhkan ekstensi ux GeoExt

semua kode tersedia - sehingga Anda dapat melihat apa yang Anda lewatkan

(jika Anda dapat memposting tautan langsung ke peta Anda saat ini - pengguna dapat men-debugnya untuk Anda.)

masukkan deskripsi gambar di sini

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

Mapperz
sumber
2
+1 - demo ini berfungsi. Ini oleh penulis yang sama juga, tetapi lebih baru.
geografisika
Apakah Anda tahu cara lain untuk menggunakan StreetView Overlay Layer di OpenLayers tanpa menggunakan GeoExt?
CatchingMonkey
Hanya untuk Google Maps v2 (usang) fuzzytolerance.info/code/… Kunci API diperlukan.
Mapperz
GeoAdmin sepertinya tidak menawarkan Street View lagi, contoh relevan yang bisa saya temukan adalah: gxp.opengeo.org/master/examples/google-streetview-panel.html (OpenLayers + GeoExt)
kryger
2

Untuk menggunakan lapisan Google dan memenuhi persyaratan lisensi, Anda harus mengakses lapisan Google melalui Google API. Ketika Anda menambahkan lapisan Google ke peta OpenLayers, OpenLayers memuat Google API.

The layer.mapObject(sebagai lawan layer.mapyang merupakan OL peta objek) harus memberikan referensi ke Google Map. Karena ini nullada yang salah memuat Google API. Anda dapat memeriksa di FireBug jika sudah dimuat dengan benar.

Contoh yang Anda tunjuk mungkin menggunakan Google 2 API lama daripada versi 3. Anda tidak lagi memerlukan kunci API dan dapat menambahkan di Google API menggunakan:

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

Lihatlah unit test untuk lapisan Google v3 API yang dapat membantu Anda.

Ingat StreetView juga membutuhkan Flash di browser.

geografi
sumber
Halo, terima kasih atas bantuan Anda. Saya tidak di meja saya sekarang jadi saya tidak akan dapat menguji saran Anda, tapi inilah yang saya tahu: Saya pasti memuat Google Maps API v3. Saya telah mengimplementasikan StreetView di Aplikasi Web sebelumnya, tetapi kali ini saya juga ingin mendapatkan overlay pada peta. Aku bertanya-tanya apakah ini hal browser. Situs web yang saya berikan tautan untuk berfungsi dengan baik di IE (8) tetapi tidak di Firefox ... ada ide?
CatchingMonkey
Demo ini tidak berfungsi untuk saya di FF6, IE8 atau IE9. Tampaknya hanya menampilkan peta atau tampilan jalan ..
geografi
Hmmm, situs web sepertinya berfungsi di IE8 saya di sini .... akan berkonsultasi dengan daftar pengguna OpenLayers juga sekarang!
CatchingMonkey
1

Alasan mengapa layer.mapObject adalah nol adalah bahwa properti mapObject dibuat setelah lapisan ditambahkan ke peta. Coba ini:

var layer = new OpenLayers.Layer.Google("Google Street", {sphericalMercator: true});
map.addLayer(layer);
layer.mapObject.addOverlay(new GStreetviewOverlay());
D_Guidi
sumber