我正在编写一个iOS应用,可以根据用户操作在地图中显示位置。我想放一个带描述的图钉并放大以显示地图细节。
如果我使用网址http://maps.google.com/maps?q=-33.895851,151.18483+(Some+Description)&z=19调用地图,我会获得一个带有“部分描述”的图钉,但会忽略缩放级别。此 可在Google地图网站上运行。
如果我使用http://maps.google.com/maps?q=-33.895851,151.18483&z=19缩放功能,但我没有引脚。
我尝试了?q=
,?ll=
和?sll=
的几种组合,但到目前为止,没有任何内容会更改缩放和显示说明。< / p>
任何线索?
我们真的清楚,这里有一些截图。我希望这可以在真实设备上工作(即使用iOS地图)。模拟器通过Safari使用谷歌地图。
以下是我在网址1([[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://maps.google.com/maps?q=-33.895851,151.18483+(Some+Description)&z=19"]];
)
这是网址2([[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://maps.google.com/maps?q=-33.895851,151.18483&z=19"]];
):
这是relikd的建议([[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://maps.google.com/maps?z=19&q=-33.895851,151.18483+(Some+Description)"]];
):
我想要在屏幕截图2中看到的图像,但是有一个引脚和描述。
感谢phix23,看起来&z=
总是被忽略了,我很幸运,我的&z=19
示例恰好放大了很多。所以,我会改写:我怎么能'鼓励'iOS地图放大?
答案 0 :(得分:1)
看起来它不受支持。在Apple文档中,它声明:
q =查询参数。此参数被视为已经过 用户在maps.google.com页面上输入查询框。 Q = * 不支持
遵循这一系列逻辑,您无法在搜索输入中指定缩放,因此无法使用“q =”查询字符串参数。
答案 1 :(得分:1)
Google Maps for iOS使用光栅图块(我认为是.png文件),因此它会捕捉到屏幕上具有谨慎数量的图块的大小。 Google这样做是为了给用户提供最佳图像。你将无法放大;只有用户才能进行精确的缩放调整。
如果您需要精确缩放级别,则无法使用Google地图显示地图。您需要切换到提供矢量图像的映射平台。 OpenStreetMap是一种选择。它有现有的库与您的iOS应用程序集成。例如,请参阅Route-me和Cloud-Made。
(如果您对栅格与向量的了解不多,请参阅What's the Difference Between Raster and Vector?
最后,iOS 6 maps page on Apple.com表示新的iOS 6地图服务将是矢量。如果你想为此编码,你应该在developer.apple.com注册iOS开发者计划(每年99美元),这样你的应用程序就会在今年秋季推出时准备就绪。
答案 2 :(得分:1)
我已经使用不同的查询参数对其进行了测试,并得出结论,地图应用程序根本没有使用z参数。而是仅使用查询字符串(q)来确定合理的地图区域。示例:如果搜索“china”,您将得到一个非常大的区域,无论z的值是什么,它都始终相同。
对于地理编码,带有查询字符串的POST请求将发送到http://www.google.com/glm/mmap
。它基本上返回了pin的位置和一个区域+一些元数据。
该协议是二进制的,因此最好使用官方API进行测试:
示例:http://maps.google.com/maps/geo?q=-33.895851,151.18483
这为您提供了一些带有地理编码地址的JSON数据,包括
指定的地图区域"LatLonBox": {
"north": -33.8944020,
"south": -33.8971000,
"east": 151.1860350,
"west": 151.1833370
}
然后,应用程序使用此区域显示结果。
但是,当您在查询字符串中设置描述时,您可以获得不同的结果。 我建议不要设置说明,因为应用会尝试通过地理编码来解决问题。
作为一种解决方法,您还可以使用MapKit在自己的应用中显示地图。然后您可以完全控制缩放系数和引脚注释。另外考虑在Safari中打开地图,也许使用Bing地图而不是谷歌地图。
好消息:
在iOS 6 SDK中有用于打开地图应用的新API,您现在可以指定描述和地图区域:
CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(-33.895851,151.18483);
MKPlacemark* p = [[MKPlacemark alloc] initWithCoordinate:coordinate addressDictionary:nil];
MKMapItem* item = [[MKMapItem alloc] initWithPlacemark:p];
item.name = @"Some Description";
MKCoordinateSpan span = MKCoordinateSpanMake(0.05, 0.05);
[item openInMapsWithLaunchOptions:@{ MKLaunchOptionsMapSpanKey : [NSValue valueWithMKCoordinateSpan:span] }];
答案 3 :(得分:0)
一年后,我移植到iOS谷歌地图API,它完全符合我的要求,没有戏剧。我设置缩放级别18,它就是这样做的。强烈推荐。