我正在尝试寻找一种搜索商家的方法,例如“杂货店”,并将其显示在用户当前位置周围的Google地图上。这曾经非常简单,使用旧的URL样式启动苹果地图位置,但我无法找到如何使用MKMapView。我知道我需要使用MKAnnotations类,但我的问题是找到数据。我已经尝试插入以下网址以获取谷歌的信息,但数据的大小似乎太大了。
http://maps.google.com/maps?q=grocery&mrt=yp&sll=37.769561,-122.412844&z=14&output=kml
是否有一种简单的方法可以设置一个属性,告诉MKMapView搜索关键字并显示当前位置周围的所有匹配业务?或者有人知道如何从谷歌获取此信息?
答案 0 :(得分:6)
该搜索返回的KML文件中包含大量信息。 MKMapView
没有办法查询Google,因此您有几个选择:
使用NSXMLParser
从该查询中获得的数据,并仅提取您感兴趣的内容(可能是标题,纬度,经度)。 KML只是XML的一个版本。
通过Google文档查找可提供更轻量级数据格式的调用。您可以将网址中的格式更改为json,但其中的信息是相同的。
该文件仅约50KB。根据我的经验,下载和解析50KB的XML文件需要大约5秒钟的时间。
修改:刚发现这个,您可能会对此感兴趣:
许多人通过JSON将数据传输到Web服务或从Web服务传输到iPhone。这是一种比使用XML更好的方法。在iPhone上解析XML简直太糟糕了。它过于复杂,令人困惑。目前,YouVersion应用程序圣经使用JSON从服务器来回传输所有内容,这一切都很有效。
如果你真的没有选择,至少要使用JSON。这是我目前使用的JSON的一个很棒的库 http://code.google.com/p/json-framework/
从这里开始:http://samsoff.es/post/iphone-plist-tutorial/
您可以通过将请求字符串更改为此来获取JSON:
http://maps.google.com/maps?q=grocery&mrt=yp&sll=37.769561,-122.412844&z=14&output=json
另一个编辑
这是另一个名为Touch JSON的JSON库。我已经使用过这个了,它很容易实现。
答案 1 :(得分:1)
不要使用maps?q=
字符串,最好在此处使用官方API:
http://code.google.com/apis/maps/documentation/geocoding/
API的JSON回复更好地与JSON Parser http://code.google.com/p/json-framework/一起使用(其他URL不返回兼容的JSON,并且不是标准API,因此可能更容易更改)。