Android:有没有办法通过查看用户的位置来获取本地城市壁纸?

时间:2015-07-17 21:58:51

标签: android

我想知道是否有这样的API。我的想法是能够根据您的地理位置获取城市或历史地标的壁纸。

我正在关注Picasa和Google,但无法找到可能给我解决方案的任何特定内容。

1 个答案:

答案 0 :(得分:0)

TL; DR

使用位置API Places API 可以实现这一点。但是,您必须使用客户端Android API和Web服务确保异步执行Web请求,因为Web Service主要用于服务器端请求。

  

注意:大部分信息都来自developer.android.com   和developers.google.com。以下是相关链接:

     

https://developer.android.com/training/location/receive-location-updates.html   https://developers.google.com/places/webservice/search   https://developers.google.com/places/webservice/photos

DETAIL

无论如何,您大多需要latitude,longitude,因此对于此部分,一个简单的位置请求就足够了。以下代码片段演示了如何在Android上检索纬度和经度。

@Override
public void onLocationChanged(Location location) {
  double latitude = location.getLatitude();
  double longitude = location.getLongitude();
}

要从Places API获取照片,您需要使用Web服务API。至少,您需要执行地方搜索请求才能获得至少一个照片参考。

  

注意:返回的照片数量因请求而异。

     
      
  • 附近搜索或文本搜索最多会返回数组中的一个照片元素。
  •   
  • 雷达搜索不会返回任何照片信息。
  •   
  • 详细信息请求最多可返回十个照片元素。
  •   

地方搜索请求是以下格式的HTTP网址: https://maps.googleapis.com/maps/api/place/nearbysearch/output?parameters

  

以下是请求的参数。

     
      
  • key
  •   
  • location - 您关心的部分。围绕其检索地点信息的纬度/经度。必须指定   作为纬度,经度。
  •   
  • radius
  •   
  • rankby=distance
  •   

以下示例是澳大利亚悉尼一个500米半径范围内“食物”类型的地点的搜索请求,其名称中包含“cruise”字样:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&name=cruise&key=API_KEY

查询照片对象数组的响应photos[]。照片对象将具有photo_reference - 用于在执行照片请求时识别照片的字符串。使用它来执行下面描述的照片请求。

地方照片请求是以下格式的HTTP网址: https://maps.googleapis.com/maps/api/place/photo?parameters

  

以下是请求的参数。

     
      
  • key
  •   
  • photoreference - 您真正关心的部分。
  •   
  • maxheightmaxwidth
  •   

示例请求如下所示。此请求将返回引用的图像,调整其大小,使其最多为400像素宽。

https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photoreference=CnRtAAAATLZNl354RwP_9UKbQ_5Psy40texXePv4oAlgP4qNEkdIrkyse7rPXYGd9D_Uj1rVsQdWT4oRz4QrYAJNpFX7rzqqMlZw2h2E2y5IKMUZ7ouD_SlcHxYq1yL4KbKUv3qtWgTK0A6QbGh87GB3sscrHRIQiG2RrmU_jF4tENr9wGS_YxoUSSDrYjWmrNfeEHSGSc3FyhNLlBU&key=API_KEY

因为您可以请求调整大小的图像,所以您不一定需要在客户端进行自定义大小调整,这对内存分配来说是一个巨大的优势。