OpenLayers与StreetView重叠


9

我试图在我的OpenLayers网络应用中添加StreetView功能,并希望将显示StreetView可用性的叠加层添加到地图本身。我已经看到了正在做的成功它的一个例子在这里,但我不能让代码工作在我自己的解决方案。具体来说:

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

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

导致错误:

layer.mapObject is null

有谁知道我可能在做错什么,如果是这样,我该如何解决?

Answers:


4

具有街景的Openlayers

需要GeoExt ux扩展名

所有代码都可用-这样您就可以看到丢失的内容

(如果您可以发布到当前地图的实时链接-用户可以为您调试它。)

在此处输入图片说明

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


2
+1-此演示有效。它也是由同一位作者撰写的,但是是最近发表的。
geographika

您是否知道在不使用GeoExt的情况下在OpenLayers中使用StreetView覆盖层的任何其他方式?
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 API访问Google图层。将Google图层添加到OpenLayers映射时,OpenLayers会加载Google API。

layer.mapObject(相对于layer.map它是OL地图对象)应该给你的谷歌地图的参考。由于这是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层单元测试,这可能会对您有所帮助。

请记住,街景视图在浏览器中也需要Flash。


嗨,谢谢您的帮助。我现在不在办公桌前,因此无法测试您的建议,但是我知道以下几点:我肯定正在加载Google Maps API v3。我之前已经在Web Apps中实现了StreetView,但是这次我也希望在地图上获得叠加层。我想知道是否是浏览器。我提供的链接的网站在IE(8)中运行良好,但在Firefox中却无法运行……有什么想法吗?
CatchingMonkey

该演示在FF6,IE8或IE9中对我不起作用。它似乎只显示地图或街道视图
geographika

嗯,该网站似乎可以在我的IE8中运行。...现在也要查询OpenLayers用户列表!
CatchingMonkey

1

layer.mapObject为null的原因是在将图层添加到地图之后创建了mapObject属性。尝试这个:

var layer = new OpenLayers.Layer.Google("Google Street", {sphericalMercator: true});
map.addLayer(layer);
layer.mapObject.addOverlay(new GStreetviewOverlay());
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.