对于给定的纬度经度,使用StreetView启动Safari浏览器

时间:2014-11-12 20:51:21

标签: google-maps google-street-view

我想从我的原生iOS应用在Safari浏览器中启动Google StreetView。我有街道地址和经度可用。我知道使用API​​查找全景ID相对容易,但遗憾的是我无法使用任何Google API。我需要在我的应用程序之外使用给定的地址或经度启动谷歌地图网站。

桌面上的街景网址(适用于40.535673,-74.209823)看起来像这样:

https://www.google.com/maps?es_sm=91&um=1&ie=UTF-8&q=719+Ramona+ave+new+york&layer=c&z=17&iwloc=A&sll=40.535673,-74.209823&cbp=13,354.4,0,0,0&cbll=40.535462,-74.209796&sa=X&ei=BMdjVIaPMIn5yASA64Jw&ved=0CCAQxB0wAA

如何在没有的情况下使用任何Google Maps API构建此网址?如果我只是尝试更换街道视图上方的纬度经度,最终朝向错误的方向。什么方法让标题恰到好处?

1 个答案:

答案 0 :(得分:0)

我解决这个问题的方法是首先调用以下API来获取panoIdbest_view_direction_deg。以下是该API的示例网址:

http://maps.google.com/cbk?output=json&ll=40.766200,-73.982500

这是我用来将全景ID和方向转换为网址的ObjC代码:

+ (NSString *)bestStreetViewWebUrlForCoordinate:(CLLocationCoordinate2D)coordinate panoId:(NSString *)panoId bestViewDirectionDeg:(NSString *)bestViewDirectionDeg
{
    NSString *streetViewUrlString = nil;
    if (panoId != nil)
    {
        streetViewUrlString = [NSString stringWithFormat:@"https://maps.gstatic.com/m/streetview/?panoid=%@&cbp=0,%@,0,0,0", panoId, bestViewDirectionDeg];
    }
    else
    {
        streetViewUrlString = [NSString stringWithFormat:@"https://maps.gstatic.com/m/streetview/?q=&layer=c&cbll=%f,%f&cbp=11,0,0,0,0&output=classic&dg=brw",coordinate.latitude, coordinate.longitude];
    }
    return streetViewUrlString;
}

输出如下:

https://maps.gstatic.com/m/streetview/?panoid=fB883QwmW5xNsXRuEHxmHw&cbp=0,207.478,0,0,0