OpenLayers พร้อมการซ้อนทับสตรีทวิว


9

ฉันกำลังพยายามเพิ่มฟังก์ชั่น StreetView ให้กับแอปพลิเคชันเว็บของ OpenLayers ของฉันและต้องการเพิ่มการซ้อนทับที่แสดงความพร้อมใช้งานของ StreetView ลงในแผนที่ ฉันได้เห็นตัวอย่างของการทำที่นี่สำเร็จแต่ฉันไม่สามารถรับรหัสเพื่อทำงานในโซลูชันของฉันเอง โดยเฉพาะ:

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

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

ผลลัพธ์ในข้อผิดพลาด:

layer.mapObject is null

มีใครที่คิดบ้างไหมว่าฉันทำอะไรผิดและถ้าเป็นเช่นนั้นฉันจะแก้ไขได้อย่างไร

คำตอบ:


4

Openlayers พร้อม Streetview

ต้องการส่วนขยาย GeoExt ux

รหัสทั้งหมดมีอยู่ - ดังนั้นคุณสามารถดูสิ่งที่คุณหายไป

(หากคุณสามารถโพสต์ลิงค์สดไปยังแผนที่ปัจจุบันของคุณ - ผู้ใช้สามารถแก้ไขข้อบกพร่องให้คุณได้)

ป้อนคำอธิบายรูปภาพที่นี่

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


2
+1 - ตัวอย่างนี้ใช้งานได้ มันเป็นโดยผู้เขียนคนเดียวกัน แต่เมื่อเร็ว ๆ นี้
geographika

คุณจะรู้วิธีอื่น ๆ ในการใช้ StreetView Overlay Layer ใน OpenLayers โดยไม่ใช้ GeoExt หรือไม่?
CatchingMonkey

เฉพาะสำหรับ Google Maps v2 (คัดค้าน) fuzzytolerance.info/code/…ต้องใช้คีย์ API
Mapperz

GeoAdmin ดูเหมือนจะไม่ได้นำเสนอสตรีทวิวอีกต่อไปตัวอย่างที่เกี่ยวข้องที่ใกล้ชิดซึ่งฉันหาได้คือ: gxp.opengeo.org/master/examples/google-streetview-panel.html (OpenLayers + GeoExt)
kryger

2

ในการใช้เลเยอร์ของ Google และตอบสนองความต้องการสิทธิ์การใช้งานคุณต้องเข้าถึงเลเยอร์ของ Google ผ่าน Google API เมื่อคุณเพิ่มเลเยอร์ Google ลงในแผนที่ OpenLayers OpenLayers จะโหลด Google API

layer.mapObject(เมื่อเทียบกับlayer.mapซึ่งเป็นวัตถุแผนที่ OL) ควรให้การอ้างอิงไปยัง Google Map นี่เป็นnullสิ่งที่ผิดพลาดในการโหลด Google API คุณสามารถตรวจสอบในFireBugว่าโหลดอย่างถูกต้องหรือไม่

ตัวอย่างที่คุณชี้อาจใช้ Google 2 API ที่เก่ากว่าแทนเวอร์ชัน 3 คุณไม่จำเป็นต้องใช้คีย์ API อีกต่อไปและสามารถเพิ่มใน Google API ได้โดยใช้:

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

ดูการทดสอบหน่วยสำหรับเลเยอร์ Google v3 APIซึ่งอาจช่วยคุณได้

โปรดจำไว้ว่า StreetView จำเป็นต้องใช้ Flash ในเบราว์เซอร์ด้วย


สวัสดีขอบคุณสำหรับความช่วยเหลือของคุณ ฉันไม่ได้อยู่ที่โต๊ะของฉันตอนนี้ดังนั้นฉันจะไม่สามารถทดสอบคำแนะนำของคุณได้ แต่นี่คือสิ่งที่ฉันรู้: ฉันกำลังโหลด Google Maps API v3 อย่างแน่นอน ฉันเคยติดตั้ง StreetView ใน Web Apps มาก่อน แต่คราวนี้ฉันกำลังมองหาภาพซ้อนทับบนแผนที่ด้วย ฉันสงสัยว่าถ้ามันเป็นสิ่งที่เบราว์เซอร์ เว็บไซต์ที่ฉันให้ลิงค์สำหรับทำงานได้ดีใน IE (8) แต่ไม่ใช่ใน Firefox ... ความคิดใด ๆ
CatchingMonkey

การสาธิตไม่ทำงานสำหรับฉันใน FF6, IE8 หรือ IE9 ดูเหมือนว่าจะแสดงเฉพาะแผนที่หรือมุมมองถนน ..
geographika

อืมดูเหมือนว่าเว็บไซต์จะทำงานใน IE8 ของฉันที่นี่ .... จะไปปรึกษารายชื่อผู้ใช้ OpenLayers เช่นกันตอนนี้!
CatchingMonkey

1

เหตุผลที่ layer.mapObject เป็นโมฆะคือคุณสมบัติ mapObject ถูกสร้างขึ้นหลังจากที่เพิ่มเลเยอร์ลงในแผนที่ ลองสิ่งนี้:

var layer = new OpenLayers.Layer.Google("Google Street", {sphericalMercator: true});
map.addLayer(layer);
layer.mapObject.addOverlay(new GStreetviewOverlay());
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.