项目要实现根据经纬度获取附近的建筑,由于项目在海外运营,谷歌地图首当其冲。

首先说明的是,该功能需要在服务端实现,也就是安卓的SDK不适用。

api文档地址:

https://developers.google.com/places/web-service/search#PlaceSearchResults

获取秘钥key的方法:

https://developers.google.com/places/web-service/get-api-key

api文档地址打不开怎么办,我将文档中的东西复制下来了,如下:

附近的搜索请求

默认情况下,当用户选择某个地点时,“附近搜索”会返回所选地点的所有可用数据字段,您将收到相应的结算费用。没有办法将附近搜索请求限制为仅返回特定字段。要避免请求(并支付)您不需要的数据,请改用 查找位置请求

通过“附近搜索”,您可以搜索指定区域内的位置。您可以通过提供关键字或指定要搜索的地点类型来优化搜索请求。

附近搜索请求是以下格式的HTTP URL:

https://maps.googleapis.com/maps/api/place/nearbysearch/output?parameters

其中output可能是以下任一值:

  • json (推荐)表示JavaScript Object Notation(JSON)中的输出

  • xml 表示输出为XML

启动“附近搜索”请求需要某些参数。作为URL中的标准,所有参数都使用ampersand(&)字符分隔。

必需参数

  • key- 您的应用程序的 API密钥。此密钥标识您的应用程序。有关 更多信息,请参阅 获取密钥

  • location - 检索地点信息的纬度/经度。必须将其指定为 纬度经度

  • radius - 定义返回位置结果的距离(以米为单位)。允许的最大半径为50 000米。请注意,radius如果指定rankby=distance(在下面的可选参数下描述),则不得包括 。

  • 如果rankby=distance(在所描述的可选参数下面)被指定,那么一个或多个 keywordnametype是必需的。

可选参数

  • keyword - 与Google为此地点编入索引的所有内容匹配的字词,包括但不限于姓名,类型和地址,以及客户评论和其他第三方内容。

  • language - 语言代码,如果可能,指示应返回结果的语言。请参阅支持的语言 及其代码列表。请注意,我们经常更新支持的语言,因此此列表可能并非详尽无遗。

  • minpricemaxprice可选) - 仅将结果限制在指定范围内的那些位置。有效值的范围介于0(最实惠)到4(最昂贵)之间。具体值表示的确切数量因地区而异。

  • name - 与Google为此地点编入索引的所有内容匹配的字词。相当于keyword。该 name字段不再局限于地名。此字段中的值与keyword字段中的值组合,并作为同一搜索字符串的一部分传递。我们建议仅对keyword所有搜索词使用 参数。

  • opennow - 仅返回在发送查询时为业务开放的那些位置。如果在查询中包含此参数,则不会返回未在Google地方信息数据库中指定营业时间的地点。

  • rankby - 指定列出结果的顺序。请注意,rankby如果指定了radius (在上面的必需参数中描述),则不得包括。可能的值是:

    • prominence(默认)。此选项根据结果的重要性对结果进行排序。排名将有利于指定区域内的显着位置。地方在Google索引中的排名,全球受欢迎程度以及其他因素都会影响到突出程度。

    • distance。此选项按照与指定距离的距离按升序对搜索结果进行偏差location。当 distance被指定时,一个或多个keywordnametype是必需的。

  • type - 将结果限制为与指定类型匹配的位置。只能指定一种类型(如果提供了多种类型,则忽略第一个条目后面的所有类型)。请参阅 支持的类型列表

  • pagetoken - 返回先前运行的搜索的后20个结果。设置pagetoken参数将使用先前使用的相同参数执行搜索 - pagetoken将忽略除以外的所有参数。

Google Maps API Premium Plan客户注意事项:您必须在请求中包含API密钥。你应该包括clientsignature参数您的要求。

附近的搜索示例

以下示例是澳大利亚悉尼一个1500米半径范围内“餐馆”类型的地点的搜索请求,其中包含“游轮”一词:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=1500&type=restaurant&keyword=cruise&key=YOUR_API_KEY

注意:在此示例中,您需要key 使用自己的API密钥替换,以使请求在您的应用程序中起作用。

JSON响应最多包含四个根元素:

  • "status"包含请求的元数据。请参阅 下面的状态代码

  • "results"包含一系列地点,包含每个地方的信息。 有关这些结果的信息,请参见搜索结果Places API establishment 每个查询最多返回20个结果。另外,political可以返回结果,其用于识别请求的区域。

  • html_attributions 可能包含一组关于此列表的归属,必须向用户显示(某些列表可能没有归属)。

  • next_page_token包含一个令牌,可用于返回最多20个附加结果。next_page_token如果没有要显示的其他结果,则不会返回A. 可以返回的最大结果数为60.在next_page_token发布a 和有效之间会有短暂的延迟。

状态代码

"status"搜索响应对象中字段包含请求的状态,并且可能会包含调试信息,以帮助您跟踪请求失败的原因。该"status"字段可能包含以下值:

  • OK表示没有发生错误; 成功检测到该地点,并返回至少一个结果。

  • ZERO_RESULTS表示搜索成功但未返回任何结果。如果搜索是latlng在远程位置传递的,则可能会发生这种情况 。

  • OVER_QUERY_LIMIT 表示您已超过配额。

  • REQUEST_DENIED表示您的请求被拒绝,通常是因为缺少无效key参数。

  • INVALID_REQUEST通常表示缺少必需的查询参数(locationradius)。

  • UNKNOWN_ERROR表示服务器端错误; 再试一次可能会成功。

错误消息

当Google商家信息服务返回其他状态代码时 OKerror_message搜索响应对象中可能还有一个附加字段。该字段包含有关给定状态代码背后原因的更多详细信息。

访问其他结果

默认情况下,每个附近搜索或文本搜索establishment每个查询最多返回20个结果; 但是,每个搜索可以返回多达60个结果,分为三个页面。如果您的搜索返回超过20,那么搜索响应将包含一个额外的值 - next_page_token。将值的值传递给新搜索next_page_tokenpagetoken参数以查看下一组结果。如果 next_page_token为null,或者未返回,则没有进一步的结果。在next_page_token发布a 和何时生效之间会有短暂的延迟 。在可用之前请求下一页将返回INVALID_REQUEST响应。使用相同的方法重试请求 next_page_token将返回下一页结果。

例如,在下面的查询中,我们搜索澳大利亚悉尼达令港附近的餐馆,并按距离对结果进行排名。您可以看到响应包含next_page_token属性。

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&rankby=distance&type=food&key=YOUR_API_KEY

{
"html_attributions" : [],
"next_page_token" : "CpQCAgEAAFxg8o-eU7_uKn7Yqjana-HQIx1hr5BrT4zBaEko29ANsXtp9mrqN0yrKWhf-y2PUpHRLQb1GT-mtxNcXou8TwkXhi1Jbk-ReY7oulyuvKSQrw1lgJElggGlo0d6indiH1U-tDwquw4tU_UXoQ_sj8OBo8XBUuWjuuFShqmLMP-0W59Vr6CaXdLrF8M3wFR4dUUhSf5UC4QCLaOMVP92lyh0OdtF_m_9Dt7lz-Wniod9zDrHeDsz_by570K3jL1VuDKTl_U1cJ0mzz_zDHGfOUf7VU1kVIs1WnM9SGvnm8YZURLTtMLMWx8-doGUE56Af_VfKjGDYW361OOIj9GmkyCFtaoCmTMIr5kgyeUSnB-IEhDlzujVrV6O9Mt7N4DagR6RGhT3g1viYLS4kO5YindU6dm3GIof1Q",
"results" : [
{
"geometry" : {
"location" : {
"lat" : -33.867217,
"lng" : 151.195939
}
},
"icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/cafe-71.png",
"id" : "7eaf747a3f6dc078868cd65efc8d3bc62fff77d7",
"name" : "Biaggio Cafe - Pyrmont",
"opening_hours" : {
"open_now" : true
},
"photos" : [
{
"height" : 600,
"html_attributions" : [],
"photo_reference" : "CnRnAAAAmWmj0BqA0Jorm1_vjAvx1n6c7ZNBxyY-U9x99-oNyOxvMjDlo2npJzyIq7c3EK1YyoNXdMFDcRPzwLJtBzXAwCUFDGo_RtLRGBPJTA2CoerPdC5yvT2SjfDwH4bFf5MrznB0_YWa4Y2Qo7ABtAxgeBIQv46sGBwVNJQDI36Wd3PFYBoUTlVXa0wn-zRITjGp0zLEBh8oIBE",
"width" : 900
}
],
"place_id" : "ChIJIfBAsjeuEmsRdgu9Pl1Ps48",
"scope" : "GOOGLE",
"price_level" : 1,
"rating" : 3.4,
"reference" : "CoQBeAAAAGu0wNJjuZ40DMrRe3mpn7fhlfIK1mf_ce5hgkhfM79u-lqy0G2mnmcueTq2JGWu9wsgS1ctZDHTY_pcqFFJyQNV2P-kdhoRIeYRHeDfbWtIwr3RgFf2zzFBXHgNjSq-PSzX_OU6OT2_3dzdhhpV-bPezomtrarW4DsGl9uh773yEhDJT6R3V8Fyvl_xeE761DTCGhT1jJ3floFI5_c-bHgGLVwH1g-cbQ",
"types" : [ "cafe", "bar", "restaurant", "food", "establishment" ],
"vicinity" : "48 Pirrama Rd, Pyrmont"
},
{
"geometry" : {
"location" : {
"lat" : -33.866786,
"lng" : 151.195633
}
},
"icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
"id" : "3ef986cd56bb3408bc1cf394f3dad9657c1d30f6",
"name" : "Doltone House",
"photos" : [
{
"height" : 1260,
"html_attributions" : [ "From a Google User" ],
"photo_reference" : "CnRwAAAAeM-aLqAm573T44qnNe8bGMkr_BOh1MOVQaA9CCggqtTwuGD1rjsviMyueX_G4-mabgH41Vpr8L27sh-VfZZ8TNCI4FyBiGk0P4fPxjb5Z1LrBZScYzM1glRxR-YjeHd2PWVEqB9cKZB349QqQveJLRIQYKq2PNlOM0toJocR5b_oYRoUYIipdBjMfdUyJN4MZUmhCsTMQwg",
"width" : 1890
}
],
"place_id" : "ChIJ5xQ7szeuEmsRs6Kj7YFZE9k",
"scope" : "GOOGLE",
"reference" : "CnRvAAAA22k1PAGyDxAgHZk6ErHh_h_mLUK_8XNFLvixPJHXRbCzg-gw1ZxdqUwA_8EseDuEZKolBs82orIQH4m6-afDZV9VcpggokHD9x7HdMi9TnJDmGb9Bdh8f-Od4DK0fASNBL7Me3CsAWkUMWhlNQNYExIQ05W7VbxDTQe2Kh9TiL840hoUZfiO0q2HgDHSUyRdvTQx5Rs2SBU",
"types" : [ "food", "establishment" ],
"vicinity" : "48 Pirrama Rd, Pyrmont"
},
{
"aspects" : [
{
"rating" : 23,
"type" : "overall"
}
],
...
],
"status" : "OK"
}

要查看下一组结果,您可以提交新查询,并将结果传递next_page_tokenpagetoken 参数。例如:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?pagetoken=CpQCAgEAAFxg8o-eU7_uKn7Yqjana-HQIx1hr5BrT4zBaEko29ANsXtp9mrqN0yrKWhf-y2PUpHRLQb1GT-mtxNcXou8TwkXhi1Jbk-ReY7oulyuvKSQrw1lgJElggGlo0d6indiH1U-tDwquw4tU_UXoQ_sj8OBo8XBUuWjuuFShqmLMP-0W59Vr6CaXdLrF8M3wFR4dUUhSf5UC4QCLaOMVP92lyh0OdtF_m_9Dt7lz-Wniod9zDrHeDsz_by570K3jL1VuDKTl_U1cJ0mzz_zDHGfOUf7VU1kVIs1WnM9SGvnm8YZURLTtMLMWx8-doGUE56Af_VfKjGDYW361OOIj9GmkyCFtaoCmTMIr5kgyeUSnB-IEhDlzujVrV6O9Mt7N4DagR6RGhT3g1viYLS4kO5YindU6dm3GIof1Q&key=YOUR_API_KEY

设置pagetoken将导致忽略任何其他参数。查询将执行与之前相同的搜索,但将返回一组新结果。您可以在原始查询后最多两次请求新页面。必须依次显示每页结果。搜索结果的两页或多页不应作为单个查询的结果显示。请注意,每次搜索都会计入针对您的使用限制的单个请求。

但是,比较坑的一点是同一个key一天调用的次数最多150000次,如果用户量较大时,要专门交费调整限制次数 。

代码示例

pom依赖

<dependency>
<groupId>de.taimos</groupId>
<artifactId>httputils</artifactId>
<version>1.11</version>
</dependency>

测试方法

import de.taimos.httputils.WS;
import org.apache.http.HttpResponse;

/**
* @author: xbq
* @date: 2019/2/13 10:47
* @description:
*/
public class GoogleMap {

public static final String NEARBY_SEARCH_URL = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=%s&radius=%s&key=%s";
public static final String NEXT_PAGE_URL = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?pagetoken=%s&key=%s";
public static final String PHOTO_URL = "https://maps.googleapis.com/maps/api/place/photo?maxwidth=480&photoreference=%s&key=%s";

// 秘钥
public static final String KEY = "你申请的KEY";

public static void main(String[] args) {

HttpResponse response = null;
String resStr = null;

// 调用接口进行请求地址数据
String location = "-33.8670522,151.1957362";
String radius = "1500";

response = WS.url(String.format(NEARBY_SEARCH_URL, location, radius, KEY)).get();
resStr = WS.getResponseAsString(response);
System.out.println("resStr==" + resStr);

/**
* 请求返回的数据中有nextPageToken字段不为空时,就有多页数据,请求下一页数据时需要将该字段携带去请求
* 查询下一页的内容
*/
String nextPageToken = "CoQE_QEAAK74QaEIfb5nG5Zfjuk0Dk2zRojKXhXr1-XhgzEY8xJrwPDvWTs82dGJuQ9JNIERxYWjadPeP-XwPqiKMWbuUpRw0vYfp7xwoj7YOhoYyF9yXwREjhKiRT_F-gaBJnvG_6FqqPbql6f4vBlzclrgu5pjSh4rUFgyU_lpHSRKSHmDaoSvVFynQe7G29-xRT54QXq35_dzIYRVEiHGhv-8qX2b8R_G237_dHIaZr5LpXbLWA7Y6j_78USKHy1t0Mpa2kKLK-bjmYlPniyX-CMocX_KwfQJplnrpLet-4vZiXo9HaPP_jaVOm6HSj-O3vdsra0Dn1fFBIt10kBpt0j1LuQlShjT2ivDgS1UjhiwGqtXRvj_iAN1SKWYuV2CXMqAFg4lkHCtfcPF0H_YUiHYiVup-xQI0cnBtbVmVR7VlvJs3S98H0hhuVyfNfp0b7KoFqwbDaw6Cfc3ohxRD-pnn5ZAfqcKFbuEYyqsHbiUAdtaFIgF07hQTNk-cswO0zaw8jQofrAkS_GjR4QCL1HY2mvWnl1g6fpi4yR28n5O6jRbtcs6MSxILh2QJhZBttmHkKYGDr218971kvmPWL9gcS981xfSNPxEjzd6IcCUrgh4ObV19OLr1JUgigqH2mD2g1JcEmgvX5SQuxIhDOQKnFPuF4AEYFO7Y58ZjTls4GTTEhBTOpSDTtIN1OYtspW9OjpXGhSVH5BjnBGwuG5HYPf-SERJMC1Pkg";
response = WS.url(String.format(NEXT_PAGE_URL, nextPageToken, KEY)).get();
resStr = WS.getResponseAsString(response);
System.out.println("resStr2==" + resStr);

/**
* 获取某个地点对应的照片。然后将得到的 url 复制到 浏览器中查看
* photoreference 这个值 是在上面的请求中得到的
*/
String photoreference = "CmRaAAAAdxvDbnaBSQO4MDseo-3SB_TZ4pd2c1EC765iu_Vu3-2XOA-LFgaZ6iiTY5sYCKxh_ZiQP0ds6qVDP4RAQn4Lxw6OEonSpgzzBBU0BrwrYMP91shZA1HIkaQVZaxKtYeqEhCKrYqwlzcV8dVs4Xv7AY2KGhRdpmMGa3n0S6d2n5cN6SckW49D6g";
resStr = String.format(PHOTO_URL, photoreference, KEY);
System.out.println("resStr3==" + resStr);
}
}

得到的返回结果为(有点长,省略了一部分json。。需要什么值 直接解析下面的JSON即可):

resStr=={
"html_attributions" : [],
"next_page_token" : "CoQE_QEAAFOBxJ8gWNrKkExgSbivQYAd46cKlMl8LNTu-ZIx8y3JmpiYhh5dqi3m9sUUwxcQ-MH7eKUgfljdH4RSlU1ExLyzw0vhfvYwfOfdmnbnIHz9xPM1hh5vBgYW2xn85NDRHNYjvB7uGTKoT3w7J5ZIy0pGCesQMjb3ritCHMT-y24DazvRsMEYgsyHk5H7TZWi6169xPyPgKi5uH5wSBpAB0zZdbuGGUY9979sVzRor32JEx6K-hkH6nfo8b1-gIrXBg_YASS81wkkHlqhMj04RDROXBpe_5Y9s4DMqGZNJuAem1Y3O0aEspDI-tT-swpUUYpe3Nvve9seDO7tqkwPWaAGMKGynt5ZlF0GSUXcEao-6dKuvRE0RaiOpdwNTNvGN7kYu6ACfAmDPnXmmIGoo-kdLhzxB4YVXgFYzHiaRIGE6Agj5kCoZ2HNaq-WHQWxx3CquyRV6bb77O_L-rds48ukOVYZ2QkhmfaJAfHGeGF0AyuPcUSip9PkjztzVzRw0oT7m3cASeTyWhci6e97h4chEKhddAc2xAqYZQ-hC8G4uyjp6L0uO_9ENEKYRRFRYWTtYtlpC_mn_xwyr76WN_IjYIyQDci2fFa9y12sPa3fow0W0FOlACfUc-RmU7f_ml1gRAYzyAQIHbDBYxYSS3dhuGDSIBnZfC3Upgh_O51jEhCkXggwwuSE1-t2CtLV_CotGhRCej6bWUC0D4ObssTvgnosi2LDHA",
"results" : [
{
"geometry" : {
"location" : {
"lat" : -33.8688197,
"lng" : 151.2092955
},
"viewport" : {
"northeast" : {
"lat" : -33.5781409,
"lng" : 151.3430209
},
"southwest" : {
"lat" : -34.118347,
"lng" : 150.5209286
}
}
},
"icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png",
"id" : "044785c67d3ee62545861361f8173af6c02f4fae",
"name" : "Sydney",
"photos" : [
{
"height" : 1536,
"html_attributions" : [
"\u003ca href=\"https://maps.google.com/maps/contrib/115027288387975928704/photos\"\u003eAlan Chen\u003c/a\u003e"
],
"photo_reference" : "CmRaAAAA2CmGfo6miJRR93a5XHlI8CUC8ms65rFBpvc5S6UZaKDffZkd3ACtDfnmemKl-AiCeYtev2l3-e8TSVK79B12jINbfk7pzmydQv2auPDTzCqpuGaFqSnwmn6wbzolzZcfEhBcKU3f6uUEPh6gtA3qlq_ZGhS3kXjaoHny1qtBO7YcDcIUmryV-g",
"width" : 2300
}
],
"place_id" : "ChIJP3Sa8ziYEmsRUKgyFmh9AQM",
"reference" : "ChIJP3Sa8ziYEmsRUKgyFmh9AQM",
"scope" : "GOOGLE",
"types" : [ "colloquial_area", "locality", "political" ],
"vicinity" : "Sydney"
}
],
"status" : "OK"
}


resStr2=={
"html_attributions" : [],
"next_page_token" : "CqQFnQIAACwVVBaTf9R5PKhw3tFgSYiobH1a7xJR4sAj8tMXbjdPG8iyUafylxU9Ve1LsQncixVCFUprcYeSpjPzpk1JMCHRzPcEQ0UkJsSSt4Gnmwbqn2sJ6EnUywGul-rVN9tg2No3KGx3ezIBc8ITnogFZAxXCkfGsP6ty4y4wC1Zqc4d4JjYD-P_JIwlSQmO5kjCKLfrnMzbAIaQrYWcUVnqcbtYdxiv41u7UL3zaEly7wDEK4d0kGnOriD1GCFD5Drl9KnGeNJ5kdCT3tiUduNQMioiU5XkKrb8DYLpEfBmCpgqCxL2_AKssad-WBGGu_OU5yIz1NOqi1g78q_-R7JF3rfKo2ZQ2KF8XV3vOrhoK_Y6699-kZ7XQI0ztxoRTUTssiBnpjBRhkDWI-IACrj9FwPyogE0qCB0BEDyuXUk05tR9GqSoLy56JLMSimFVCiUSHz2dXnStHl7Sg-wia562jQacFgjq_w1_wJmHvYr-QRwKt-YPCZuS5x7Fo7dzz5qJniulQ_FB5UwVVw-DHuXF5KJJ0x8uFLbiCm-9B4q7XjF3Y8rTX94tnpfR9ow92GTXL1GHnQZRC67cQqEZG7w5OSHnsyv0rbagM-DYfBfB4dxP1CBrXvZxVs713Eh3kwNqfSJaBZDkOJKzF-ObMuVfTLL3giugfx1knM4j_--0e_117MzeC4skxQRV6Q67kQqpf3lDQmMPUZX87BULX6Lx394G6DBQYf2XUwPGrRF9c_CckUo2_OOg5KbdAUQqlfTE0-Wk6l8b4njzJ8_BluMHMZLwGqa_SllxEsY_4F8vMRw-ml_6gsc_lapkrh9MylaPD7FeHioTEDKPB_UcJ5O67pNDRfyFee1jW2MHyfAev-3RpyT18kgk_QVNQhkjsO9NBIQh41tRo68GtQhXHfxlx1MJxoUcP_2zUJbBnv0cKwt44vWPiTWo4A",
"results" : [
{
"geometry" : {
"location" : {
"lat" : -33.86536760000001,
"lng" : 151.2090887
},
"viewport" : {
"northeast" : {
"lat" : -33.86401861970851,
"lng" : 151.2104376802915
},
"southwest" : {
"lat" : -33.8667165802915,
"lng" : 151.2077397197085
}
}
},
"icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/lodging-71.png",
"id" : "7966e287de7b33958cd5fac4bdcab4c3c8a7cf75",
"name" : "Radisson Blu Plaza Hotel Sydney",
"opening_hours" : {
"open_now" : true
},
"photos" : [
{
"height" : 1243,
"html_attributions" : [
"\u003ca href=\"https://maps.google.com/maps/contrib/113323939240497973930/photos\"\u003eRadisson Blu Plaza Hotel Sydney\u003c/a\u003e"
],
"photo_reference" : "CmRaAAAAGqGsjVf5XLDhg0WDZJHoo6K2GD6145vEVOOPL6oRSYJOTnQ7IB7xg_HR7VAx5Txkv_xdKRg9X5qJ9dHluAXV-eMifF4oqizMSnzjSw62OzCBLySWJmVw-SpievEfp-GrEhAfho_Cnggh1UjsWhaW1l1SGhQccEY-CZKWsXSuZFifHGWttUyKpA",
"width" : 1244
}
],
"place_id" : "ChIJI6ovxEGuEmsRAdcebtTwTrU",
"plus_code" : {
"compound_code" : "46M5+VH Sydney, New South Wales, Australia",
"global_code" : "4RRH46M5+VH"
},
"rating" : 4.5,
"reference" : "ChIJI6ovxEGuEmsRAdcebtTwTrU",
"scope" : "GOOGLE",
"types" : [ "lodging", "point_of_interest", "establishment" ],
"user_ratings_total" : 1080,
"vicinity" : "27 O'Connell Street, Sydney"
}
],
"status" : "OK"
}

resStr3==https://maps.googleapis.com/maps/api/place/photo?maxwidth=480&photoreference=CmRaAAAAdxvDbnaBSQO4MDseo-3SB_TZ4pd2c1EC765iu_Vu3-2XOA-LFgaZ6iiTY5sYCKxh_ZiQP0ds6qVDP4RAQn4Lxw6OEonSpgzzBBU0BrwrYMP91shZA1HIkaQVZaxKtYeqEhCKrYqwlzcV8dVs4Xv7AY2KGhRdpmMGa3n0S6d2n5cN6SckW49D6g&key=AIzaSyD-M2PDsTZaEP28taVQD9wysAJLyZxkUDM

用google map实现周边搜索功能的更多相关文章

  1. 【微信公众平台开发】百度周边搜索接口php封装

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWl2YW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...

  2. 【起航计划 032】2015 起航计划 Android APIDemo的魔鬼步伐 31 App->Search->Invoke Search 搜索功能 Search Dialog SearchView SearchRecentSuggestions

    Search (搜索)是Android平台的一个核心功能之一,用户可以在手机搜索在线的或是本地的信息.Android平台为所有需要提供搜索或是查询功能的应用提 供了一个统一的Search Framew ...

  3. Google map API V3

    本文主要总结Google map API V3使用中最简单也是最常见的一些操作以及相关概念,如果需要更加详细的信息,请直接阅读Google提供的关于map的文档. google map api v3文 ...

  4. Google map实现类似Google earth的图标展开功能

    前言 在Google map的开发时,如果有多个图标重叠在一起,这时下面的图标就点击不到.而在Google Earth中,鼠标一移到上面就会自动弹开,这对于用户而言是十分人性化的一个功能.如下是在Go ...

  5. Google Map API V3开发(5)

    Google Map API V3开发(1) Google Map API V3开发(2) Google Map API V3开发(3) Google Map API V3开发(4) Google M ...

  6. Google Map和桌面组件 Android开发教程

    本文节选于机械工业出版社推出的<Android应用开发揭秘>一 书,作者为杨丰盛.本书内容全面,详细讲解了Android框架.Android组件.用户界面开发.游戏开发.数据存储.多媒体开 ...

  7. 【Android】3.12 兴趣点( POI)搜索功能

    分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 一.简介 POI(Point of Interest),中文可以翻译为“兴趣点”.在地理信息系统中,一个POI ...

  8. Google Map API使用详解(一)——Google Map开发背景知识

    一.谷歌地图主页 谷歌地图对应不同的地区都会有一些专门的主页,首次登陆时会显示这些地区.比如,香港的:http://maps.google.com.hk,台湾的:http://maps.google. ...

  9. Google Map API抓取地图坐标信息小程序

    因为实验室需要全国城市乡镇的地理坐标,有Execl的地名信息,需要一一查找地方的经纬度.Google Map地图实验室提供自带的查找经纬度的方法,不过需要一个点一个点的手输入,过于繁琐,所以自己利用G ...

随机推荐

  1. Python内置模块的几点笔记

    1.shutil模块 import shutil shutil.make_archive('shutil_archive_test', 'zip', 'D:\pyworkspace\.idea') m ...

  2. Python 和 Scikit-Learn

    Reference:http://mp.weixin.qq.com/s?src=3&timestamp=1474985436&ver=1&signature=at24GKibw ...

  3. Linux中查看文件夹占用磁盘大小

    一.命令 ./ du -h ./ 查看当前目录占用空间 二.样例

  4. 每天一个linux命令:top

    1.命令简介 top (top) 令经常用来实时监控linux的系统状况,比如cpu.内存的使用,类似于Windows的任务管理器. 2.用法 top -hv | -abcHimMsS -d dela ...

  5. SharePoint 2016 - 安装QuickFlow2013

    本文记录在SharePoint 2016上安装QuickFlow的步骤. QuickFlow尚未推出针对SP16版本的安装包,不过,for SP13版本的wsp是可以直接用于SP16的 1)添加wsp ...

  6. H5中画图标签Canvas---画矩形,画线,画圆,渐变色,图形载入

    一: 1.鼠标监视坐标值 <!DOCTYPE html> <head> <meta charset=UTF-8> <title>canvas的演示< ...

  7. PHP-问题处理Fatal error: Uncaught Error: Call to undefined function mb_strlen()

    1.问题 今天重新安装了ubuntu,PHP,MySQL,Apache,到测试CMS项目时发生一个错误: Fatal error: Uncaught Error: Call to undefined ...

  8. Linux Shell 运算符

    Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 逻辑运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 ...

  9. Java里进制转换(二进制、八进制、十进制、十六进制)

    // 十进制转其它进制(二进制,八进制,十六进制) int k = 17; System.out.println(Integer.toBinaryString(k));// 转二进制 System.o ...

  10. LeetCode 232:Implement Queue using Stacks

     Implement the following operations of a queue using stacks. push(x) -- Push element x to the back ...