精华内容
下载资源
问答
  • <p>is there a way to query the google static maps api by providing a zipcode to receive a list of all streetnames and a list of their suffix? <p>we have a list of addresses and some of them are ...
  • 主要源码如下://index.jsPage({ data: { youbian: null, resultInfo: null }, //查询按钮点击处理函数 btnClick:function(){ var thispage=this; this.getYouZhengInfo(this.data.youbian,function(data){...

    主要源码如下:

    //index.js

    Page({

     data: {

       youbian: null,

       resultInfo: null

      },

      //查询按钮点击处理函数

     btnClick:function(){

        var thispage=this;

        this.getYouZhengInfo(this.data.youbian,function(data){thispage.setData({resultInfo:data});

       }

    )},

      //文本框输入处理函数

      inputNumber:function(e){

        this.setData({youbian:e.detail.value})

      },

      //获取邮编地区信息函数

     getYouZhengInfo: function (num, callback) {

       wx.request({

         url: 'http://v.juhe.cn/postcode/query?key=7f36d1d1aca33c453fc5e8403cd0017e&postcode=' + num,

         data: {

           x: '',

           y: ''

         },

         header: {

         },

         success: function (result) {

           callback(result.data)

         }

       })

      }

      })

     说明:(回调函数的使用)


    展开全文
  • 生成布加勒斯特/罗马尼亚邮政编码地图时获取有用数据的脚本 该脚本使用从 csv 中读取的街道名称发出请求,并获取每条此类街道的地理坐标。 获得的结果保存在与进行街道读数的 csv 相同的文件夹中的 json 文件中。 ...
  • <p>Find Postal Code | Zipcode using Google map geocoding reverse. <p>I want this functionality.... ...<p>I just want to fetch pincode for the ewspective google location using google api geocoding ...
  • 高德地图 行政区编码

    2019-02-20 15:19:49
    高德地图,行政区域编码,防止不能下载,放这一份,Excel 版本
  • 百度地图移动版API不仅包含构建地图的基本接口,还集成了众多搜索服务,包括:位置检索、周边检索、范围检索、公交检索、驾乘检索、步行检索、地址信息查询等。  百度地图移动版API提供的搜索服务主要是通过初始化...
          百度地图移动版API不仅包含构建地图的基本接口,还集成了众多搜索服务,包括:位置检索、周边检索、范围检索、公交检索、驾乘检索、步行检索、地址信息查询等。
    

          百度地图移动版API提供的搜索服务主要是通过初始化MKSearch类,注册搜索结果的监听对象MKSearchListener来实现异步搜索服务。首先需要自定义一个MySearchListener类,它实现MKSearchListener接口,然后通过实现接口中不同的回调方法,来获得对应的搜索结果。MySearchListener类的定义如下:

    1. /** 
    2.  * 实现MKSearchListener接口,用于实现异步搜索服务,得到搜索结果 
    3.  *  
    4.  * @author liufeng 
    5.  */  
    6. public class MySearchListener implements MKSearchListener {  
    7.     /** 
    8.      * 根据经纬度搜索地址信息结果 
    9.      * @param result 搜索结果 
    10.      * @param iError 错误号(0表示正确返回) 
    11.      */  
    12.     @Override  
    13.     public void onGetAddrResult(MKAddrInfo result, int iError) {  
    14.     }  
    15.   
    16.     /** 
    17.      * 驾车路线搜索结果 
    18.      * @param result 搜索结果 
    19.      * @param iError 错误号(0表示正确返回) 
    20.      */  
    21.     @Override  
    22.     public void onGetDrivingRouteResult(MKDrivingRouteResult result, int iError) {  
    23.     }  
    24.   
    25.     /** 
    26.      * POI搜索结果(范围检索、城市POI检索、周边检索) 
    27.      * @param result 搜索结果 
    28.      * @param type 返回结果类型(11,12,21:poi列表 7:城市列表) 
    29.      * @param iError 错误号(0表示正确返回) 
    30.      */  
    31.     @Override  
    32.     public void onGetPoiResult(MKPoiResult result, int type, int iError) {  
    33.     }  
    34.   
    35.     /** 
    36.      * 公交换乘路线搜索结果 
    37.      * @param result 搜索结果 
    38.      * @param iError 错误号(0表示正确返回) 
    39.      */  
    40.     @Override  
    41.     public void onGetTransitRouteResult(MKTransitRouteResult result, int iError) {  
    42.     }  
    43.   
    44.     /** 
    45.      * 步行路线搜索结果 
    46.      * @param result 搜索结果 
    47.      * @param iError 错误号(0表示正确返回) 
    48.      */  
    49.     @Override  
    50.     public void onGetWalkingRouteResult(MKWalkingRouteResult result, int iError) {  
    51.     }  
    52. }  
    :可根据你要检索的内容,再去具体实现上面对应的方法,获取到搜索结果。

    1. // 初始化MKSearch  
    2. mMKSearch = new MKSearch();  
    3. mMKSearch.init(mapManager, new MySearchListener()); 
    经过上面两步之后,就可以通过调用MKSearch所提供的一些检索方法来搜索你想要的信息了。

    下面是一个小的示例来通过这些方法获取信息:

    1)布局文件res/layout/query_address.xml

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:layout_width="fill_parent"  
    4.     android:layout_height="fill_parent">  
    5.     <LinearLayout   
    6.         android:orientation="vertical"  
    7.         android:layout_width="fill_parent"  
    8.         android:layout_height="fill_parent"  
    9.         >  
    10.         <TextView  
    11.             android:layout_width="fill_parent"  
    12.             android:layout_height="wrap_content"  
    13.             android:text="经度:"  
    14.         />  
    15.         <EditText android:id="@+id/longitude_input"  
    16.             android:layout_width="fill_parent"  
    17.             android:layout_height="wrap_content"   
    18.             android:text="106.720397"  
    19.         />  
    20.           
    21.         <TextView  
    22.             android:layout_width="fill_parent"  
    23.             android:layout_height="wrap_content"  
    24.             android:text="纬度:"  
    25.         />  
    26.         <EditText android:id="@+id/latitude_input"  
    27.             android:layout_width="fill_parent"  
    28.             android:layout_height="wrap_content"   
    29.             android:text="26.597239"  
    30.         />  
    31.       
    32.         <Button android:id="@+id/query_button"  
    33.             android:layout_width="wrap_content"  
    34.             android:layout_height="wrap_content"  
    35.             android:layout_gravity="right"  
    36.             android:text="地址查询"  
    37.         />  
    38.           
    39.         <TextView android:id="@+id/address_text"  
    40.             android:layout_width="wrap_content"  
    41.             android:layout_height="wrap_content"  
    42.         />  
    43.         <!--   
    44.             虽然定义了MapView,但是设置了android:visibility="gone"将其隐藏  
    45.             因为本示例并不需要显示地图,但不定义又不行(baidu map api的要求)   
    46.         -->  
    47.         <com.baidu.mapapi.MapView android:id="@+id/map_View"  
    48.             android:layout_width="fill_parent"  
    49.             android:layout_height="fill_parent"  
    50.             android:clickable="true"  
    51.             android:visibility="gone"  
    52.         />  
    53.     </LinearLayout>  
    54. </ScrollView>  
    2)继承com.baidu.mapapi.MapActivity的Activity类
    [java]  view plain copy
    1. package com.liufeng.baidumap;  
    2.   
    3. import android.os.Bundle;  
    4. import android.view.View;  
    5. import android.view.View.OnClickListener;  
    6. import android.widget.Button;  
    7. import android.widget.EditText;  
    8. import android.widget.TextView;  
    9.   
    10. import com.baidu.mapapi.BMapManager;  
    11. import com.baidu.mapapi.GeoPoint;  
    12. import com.baidu.mapapi.MKAddrInfo;  
    13. import com.baidu.mapapi.MKDrivingRouteResult;  
    14. import com.baidu.mapapi.MKPoiInfo;  
    15. import com.baidu.mapapi.MKPoiResult;  
    16. import com.baidu.mapapi.MKSearch;  
    17. import com.baidu.mapapi.MKSearchListener;  
    18. import com.baidu.mapapi.MKTransitRouteResult;  
    19. import com.baidu.mapapi.MKWalkingRouteResult;  
    20. import com.baidu.mapapi.MapActivity;  
    21.   
    22. /** 
    23.  * 根据经纬度查询地址信息 
    24.  *  
    25.  * @author liufeng 
    26.  * @date 2011-05-03 
    27.  */  
    28. public class QueryAddressActivity extends MapActivity {  
    29.     // 定义地图引擎管理类  
    30.     private BMapManager mapManager;  
    31.     // 定义搜索服务类  
    32.     private MKSearch mMKSearch;  
    33.   
    34.     private EditText longitudeEditText;  
    35.     private EditText latitudeEditText;  
    36.     private TextView addressTextView;  
    37.     private Button queryButton;  
    38.   
    39.     @Override  
    40.     public void onCreate(Bundle savedInstanceState) {  
    41.         super.onCreate(savedInstanceState);  
    42.         setContentView(R.layout.query_address);  
    43.   
    44.         // 初始化MapActivity  
    45.         mapManager = new BMapManager(getApplication());  
    46.         // init方法的第一个参数需填入申请的API Key  
    47.         mapManager.init("285B415EBAB2A92293E85502150ADA7F03C777C4"null);  
    48.         super.initMapActivity(mapManager);  
    49.   
    50.         // 初始化MKSearch  
    51.         mMKSearch = new MKSearch();  
    52.         mMKSearch.init(mapManager, new MySearchListener());  
    53.   
    54.         // 通过id查询在布局文件中定义的控件  
    55.         longitudeEditText = (EditText) findViewById(R.id.longitude_input);  
    56.         latitudeEditText = (EditText) findViewById(R.id.latitude_input);  
    57.         addressTextView = (TextView) findViewById(R.id.address_text);  
    58.         queryButton = (Button) findViewById(R.id.query_button);  
    59.   
    60.         // 给地址查询按钮设置单击事件监听器  
    61.         queryButton.setOnClickListener(new OnClickListener() {  
    62.             @Override  
    63.             public void onClick(View v) {  
    64.                 // 用户输入的经度值  
    65.                 String longitudeStr = longitudeEditText.getText().toString();  
    66.                 // 用户输入的纬度值  
    67.                 String latitudeStr = latitudeEditText.getText().toString();  
    68.   
    69.                 try {  
    70.                     // 将用户输入的经纬度值转换成int类型  
    71.                     int longitude = (int) (1000000 * Double.parseDouble(longitudeStr));  
    72.                     int latitude = (int) (1000000 * Double.parseDouble(latitudeStr));  
    73.   
    74.                     // 查询该经纬度值所对应的地址位置信息  
    75.                     mMKSearch.reverseGeocode(new GeoPoint(latitude, longitude));  
    76.                 } catch (Exception e) {  
    77.                     addressTextView.setText("查询出错,请检查您输入的经纬度值!");  
    78.                 }  
    79.             }  
    80.         });  
    81.     }  
    82.   
    83.     @Override  
    84.     protected boolean isRouteDisplayed() {  
    85.         return false;  
    86.     }  
    87.   
    88.     @Override  
    89.     protected void onDestroy() {  
    90.         if (mapManager != null) {  
    91.             // 程序退出前需调用此方法  
    92.             mapManager.destroy();  
    93.             mapManager = null;  
    94.         }  
    95.         super.onDestroy();  
    96.     }  
    97.   
    98.     @Override  
    99.     protected void onPause() {  
    100.         if (mapManager != null) {  
    101.             // 终止百度地图API  
    102.             mapManager.stop();  
    103.         }  
    104.         super.onPause();  
    105.     }  
    106.   
    107.     @Override  
    108.     protected void onResume() {  
    109.         if (mapManager != null) {  
    110.             // 开启百度地图API  
    111.             mapManager.start();  
    112.         }  
    113.         super.onResume();  
    114.     }  
    115.   
    116.     /** 
    117.      * 内部类实现MKSearchListener接口,用于实现异步搜索服务 
    118.      *  
    119.      * @author liufeng 
    120.      */  
    121.     public class MySearchListener implements MKSearchListener {  
    122.         /** 
    123.          * 根据经纬度搜索地址信息结果 
    124.          *  
    125.          * @param result 搜索结果 
    126.          * @param iError 错误号(0表示正确返回) 
    127.          */  
    128.         @Override  
    129.         public void onGetAddrResult(MKAddrInfo result, int iError) {  
    130.             if (result == null) {  
    131.                 return;  
    132.             }  
    133.             StringBuffer sb = new StringBuffer();  
    134.             // 经纬度所对应的位置  
    135.             sb.append(result.strAddr).append("/n");  
    136.   
    137.             // 判断该地址附近是否有POI(Point of Interest,即兴趣点)  
    138.             if (null != result.poiList) {  
    139.                 // 遍历所有的兴趣点信息  
    140.                 for (MKPoiInfo poiInfo : result.poiList) {  
    141.                     sb.append("----------------------------------------").append("/n");  
    142.                     sb.append("名称:").append(poiInfo.name).append("/n");  
    143.                     sb.append("地址:").append(poiInfo.address).append("/n");  
    144.                     sb.append("经度:").append(poiInfo.pt.getLongitudeE6() / 1000000.0f).append("/n");  
    145.                     sb.append("纬度:").append(poiInfo.pt.getLatitudeE6() / 1000000.0f).append("/n");  
    146.                     sb.append("电话:").append(poiInfo.phoneNum).append("/n");  
    147.                     sb.append("邮编:").append(poiInfo.postCode).append("/n");  
    148.                     // poi类型,0:普通点,1:公交站,2:公交线路,3:地铁站,4:地铁线路  
    149.                     sb.append("类型:").append(poiInfo.ePoiType).append("/n");  
    150.                 }  
    151.             }  
    152.             // 将地址信息、兴趣点信息显示在TextView上  
    153.             addressTextView.setText(sb.toString());  
    154.         }  
    155.   
    156.         /** 
    157.          * 驾车路线搜索结果 
    158.          *  
    159.          * @param result 搜索结果 
    160.          * @param iError 错误号(0表示正确返回) 
    161.          */  
    162.         @Override  
    163.         public void onGetDrivingRouteResult(MKDrivingRouteResult result, int iError) {  
    164.         }  
    165.   
    166.         /** 
    167.          * POI搜索结果(范围检索、城市POI检索、周边检索) 
    168.          *  
    169.          * @param result 搜索结果 
    170.          * @param type 返回结果类型(11,12,21:poi列表 7:城市列表) 
    171.          * @param iError 错误号(0表示正确返回) 
    172.          */  
    173.         @Override  
    174.         public void onGetPoiResult(MKPoiResult result, int type, int iError) {  
    175.         }  
    176.   
    177.         /** 
    178.          * 公交换乘路线搜索结果 
    179.          *  
    180.          * @param result 搜索结果 
    181.          * @param iError 错误号(0表示正确返回) 
    182.          */  
    183.         @Override  
    184.         public void onGetTransitRouteResult(MKTransitRouteResult result, int iError) {  
    185.         }  
    186.   
    187.         /** 
    188.          * 步行路线搜索结果 
    189.          *  
    190.          * @param result 搜索结果 
    191.          * @param iError 错误号(0表示正确返回) 
    192.          */  
    193.         @Override  
    194.         public void onGetWalkingRouteResult(MKWalkingRouteResult result, int iError) {  
    195.         }  
    196.     }  
    197. }  
    3)AndroidManifest.xml中的配置
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    3.       package="com.liufeng.baidumap"  
    4.       android:versionCode="1"  
    5.       android:versionName="1.0">  
    6.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
    7.         <activity android:name=".QueryAddressActivity" android:label="@string/app_name">  
    8.             <intent-filter>  
    9.                 <action android:name="android.intent.action.MAIN" />  
    10.                 <category android:name="android.intent.category.LAUNCHER" />  
    11.             </intent-filter>  
    12.         </activity>  
    13.     </application>  
    14.     <uses-sdk android:minSdkVersion="4" />  
    15.   
    16.     <!-- 访问网络的权限 -->  
    17.     <uses-permission android:name="android.permission.INTERNET" />  
    18.     <!-- 访问精确位置的权限 -->  
    19.     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  
    20.     <!-- 访问网络状态的权限 -->  
    21.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
    22.     <!-- 访问WIFI网络状态的权限 -->  
    23.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
    24.     <!-- 改变WIFI网络状态的权限 -->  
    25.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  
    26.     <!-- 读写存储卡的权限 -->  
    27.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
    28.     <!-- 读取电话状态的权限 -->  
    29.     <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
    30. </manifest>   
    然后运行就可以看到效果了,当然也可以在此基础上进行扩展哦,比如在MapView中显示等。

    展开全文
  • Android studio 百度地图开发(5)查询周边服务(加油站)

    Android studio 百度地图开发(5)查询周边服务(加油站)

    email:chentravelling@163.com

          开发环境:win7 64位,Android Studio,请注意是Android Studio,使用的导航SDK版本:3.1.0

    一.功能描述

          大致功能为:通过百度地图定位获得当前位置,然后通过加油站数据接口(https://www.juhe.cn/docs/api/id/7)搜索周边的加油站信息,并在地图上显示。这里,我把访问加油站数据接口的部分放在了服务器上,因为后期还有一些其他功能,不可能都放在手机端去实现。

    二.实现部分

    1.加油站数据接口

           需要先申请api_key,很简单,没有百度地图的API_KEY那么复杂,地址:https://www.juhe.cn/docs/api/id/7。

    2.搭建服务器

          这部分,本人不知道怎么去描述,因为有web基础,使用过SSM(spring+springMVC+Mybatis)架构,所以还是继续使用SSM。关于SSM架构的服务器环境搭建,资料很多,就不赘述了,而且,主要功能并不在于服务器上,换一个架构甚至“没有架构”都行。

           在服务器端主要要实现对加油站数据的访问,按照官方的API说明,通过以下代码实现了数据访问:

    package com.intveh.component.gas.controller;
    
    import java.io.BufferedReader;
    import java.io.ByteArrayOutputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.util.HashMap;
    import java.util.Map;
     
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.intveh.component.car.model.Car;
    
    @Controller
    public class GasController {
    	public static final String DEF_CHATSET = "UTF-8";
    	public static final int DEF_CONN_TIMEOUT = 30000;
    	public static final int DEF_READ_TIMEOUT = 30000;
    	public static String userAgent =  "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";
    	 /**
    		 * 请求接口地址
    		 */
    	public static String url = "http://apis.juhe.cn/oil/local";
    		/**
    		 * AppKey
    		 */
    	public static String key = "cbee44f8a21c371***********51e8b9";//改为自己的key
    	 /**
    	 * 查询附近的加油站
    	 * 
    	 * @param 经纬度
    	 *            
    	 * @return 查询结果 json
    	 */
    	@RequestMapping(value = "/gas/searchNear")
    	@ResponseBody
    	public void searchNear(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
    		//response.setHeader("Access-Control-Allow-Origin", "*");
    		//Car car = carDAO.getCar(carId);
    		//return car;
    		String result = "";
    		//System.out.println("开始搜索");
    		/**
    		 * 纬度
    		 */
    		String latitude = request.getParameter("latitude");
    		/**
    		 * 经度
    		 */
    		String longitude = request.getParameter("longitude");
    		/**
    		 * 搜索范围
    		 */
    		String radius = request.getParameter("radius")==null?"1000":request.getParameter("radius");
    		/**
    		 * 页数
    		 */
    		String page = "1";
    		/**
    		 * 格式
    		 */
    		String format = "1";
    		//System.out.println(longitude+","+latitude+","+radius+","+page+","+format);
    		Map params = new HashMap();
    		if(latitude!=null&&longitude!=null&&!"".equals(latitude)&&!"".equals(longitude))
    		{
    			params.put("lon", longitude);
    			params.put("lat", latitude);
    			params.put("r", radius);
    			params.put("page", page);
    			params.put("format",format);	
    			params.put("key", key);
    			JSONObject object = new JSONObject();
    			//System.out.println(longitude+","+latitude+","+radius+","+page+","+format);
    			try
    			{
    				result =net(url, params, "GET");
    	            object = JSONObject.fromObject(result);
    	            if(object.getInt("error_code")==0){
    	                System.out.println(object.get("result"));
    	                
    	            }else{
    	               System.out.println(object.get("error_code")+":"+object.get("reason"));
    	            }
    				
    				response.setContentType("text/json; charset=UTF-8");
    				response.getOutputStream().write(object.get("result").toString().getBytes("UTF-8")); 
    				//System.out.println(object.get("result"));
    	        } catch (Exception e) {
    	            e.printStackTrace();
    	        }
    			//response.setHeader("Access-Control-Allow-Origin", "*");
    			//response.reset();
    			//response.setContentType(String);
    			
    			//response.getOutputStream().write(object.toString().getBytes("UTF-8"));
    		}
    	}
    	/**
        *
        * @param strUrl 请求地址
        * @param params 请求参数
        * @param method 请求方法
        * @return  网络请求字符串
        * @throws Exception
        */
       public static String net(String strUrl, Map params,String method) throws Exception {
           HttpURLConnection conn = null;
           BufferedReader reader = null;
           String rs = null;
           try {
               StringBuffer sb = new StringBuffer();
               if(method==null || method.equals("GET")){
                   strUrl = strUrl+"?"+urlencode(params);
               }
               URL url = new URL(strUrl);
               System.out.println("url = "+url);
               conn = (HttpURLConnection) url.openConnection();
               if(method==null || method.equals("GET")){
                   conn.setRequestMethod("GET");
               }else{
                   conn.setRequestMethod("POST");
                   conn.setDoOutput(true);
               }
               conn.setRequestProperty("User-agent", userAgent);
               conn.setUseCaches(false);
               conn.setConnectTimeout(DEF_CONN_TIMEOUT);
               conn.setReadTimeout(DEF_READ_TIMEOUT);
               conn.setInstanceFollowRedirects(false);
               conn.connect();
           /*    if (params!= null && method.equals("POST")) {
                   try (DataOutputStream out = new DataOutputStream(conn.getOutputStream())) {
                       out.writeBytes(urlencode(params));
                   }
               }*/
               InputStream is = conn.getInputStream();
               reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET));
               String strRead = null;
               while ((strRead = reader.readLine()) != null) {
                   sb.append(strRead);
               }
               rs = sb.toString();
           } catch (IOException e) {
               e.printStackTrace();
           } finally {
               if (reader != null) {
                   reader.close();
               }
               if (conn != null) {
                   conn.disconnect();
               }
           }
           return rs;
       }
    
       //将map型转为请求参数型
       public static String urlencode(Map<String,Object>data) {
           StringBuilder sb = new StringBuilder();
           for (Map.Entry i : data.entrySet()) {
               try {
                   sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&");
               } catch (UnsupportedEncodingException e) {
                   e.printStackTrace();
               }
           }
           return sb.toString();
       }
    }
    
          使用一下数据访问服务器即可查看获得的加油站信息:


    3.手机端实现

          (对于我)稍微有点难度的还是在手机端功能的实现。

    第一步:加油站信息类GasStationModel.java

          为了更加方便的传递数据,写了一个加油站信息类,对数据实体化。同时实现了Serializable接口,因为后面需要利用intent传递list<GasStationModel>时,将list强制转化成serializable。

    package intvehapp.intvehapp;
    
    import java.io.Serializable;
    import java.util.Map;
    
    /**
     * Created by chen on 2016/4/2.
     */
    public class GasStationModel implements Serializable {
    
        public GasStationModel(
                String area,
                String fwlsmc,
                String address,
                String areaname,
                String distance,
                String exhaust,
                String discount,
                String lon,
                String brandname,
                String type,
                Map<String,String> price,
                Map<String,String> gastprice,
                String name,
                String id,
                String lat,
                String position)
        {
            this.area = area;
            this.address = address;
            this.areaname = areaname;
            this.brandname = brandname;
            this.discount = discount;
            this.distance = distance;
            this.exhaust = exhaust;
            this.fwlsmc = fwlsmc;
            this.gastprice = gastprice;
            this.id = id;
            this.price = price;
            this.lon = lon;
            this.type = type;
            this.name = name;
            this.lat = lat;
            this.position = position;
        }
        /**
         * 邮编
         */
        private String area;
        /**
         * 加油卡信息
         */
        private String fwlsmc;
        /**
         * 加油站地址
         */
        private String address;
        /**
         * 城市区域
         */
        private String areaname;
        /**
         * 距离?
         */
        private String distance;
        /**
         * 尾气排放标准
         */
        private String exhaust;
        /**
         * 是否打折加油站
         */
        private String discount;
        /**
         * 百度地图经度
         */
        private String lon;
        /**
         * 运营商类型
         */
        private String brandname;
        /**
         * 加油站类型
         */
        private String type;
        /**
         * 省控基准油价
         */
        private Map<String,String> price;
        /**
         * 加油站油价
         */
        private Map<String,String> gastprice;
        /**
         * 加油站名字
         */
        private String name;
        /**
         * id
         */
        private String id;
        /**
         * 谷歌地图坐标
         */
        private String position;
        /**
         * 百度地图纬度
         */
        private String lat;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getArea() {
            return area;
        }
    
        public void setArea(String area) {
            this.area = area;
        }
        public String getFwlsmc() {
            return fwlsmc;
        }
    
        public void setFwlsmc(String fwlsmc) {
            this.fwlsmc = fwlsmc;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        public String getAreaname() {
            return areaname;
        }
    
        public void setAreaname(String areaname) {
            this.areaname = areaname;
        }
    
        public String getDistance() {
            return distance;
        }
    
        public void setDistance(String distance) {
            this.distance = distance;
        }
    
        public String getDiscount() {
            return discount;
        }
    
        public void setDiscount(String discount) {
            this.discount = discount;
        }
    
        public String getExhaust() {
            return exhaust;
        }
    
        public void setExhaust(String exhaust) {
            this.exhaust = exhaust;
        }
    
        public String getLon() {
            return lon;
        }
    
        public void setLon(String lon) {
            this.lon = lon;
        }
    
        public String getBrandname() {
            return brandname;
        }
    
        public void setBrandname(String brandname) {
            this.brandname = brandname;
        }
    
        public String getType() {
            return type;
        }
    
        public void setType(String type) {
            this.type = type;
        }
    
        public Map<String, String> getPrice() {
            return price;
        }
    
        public void setPrice(Map<String, String> price) {
            this.price = price;
        }
    
        public Map<String, String> getGastprice() {
            return gastprice;
        }
    
        public void setGastprice(Map<String, String> gastprice) {
            this.gastprice = gastprice;
        }
    
        public String getPosition() {
            return position;
        }
    
        public void setPosition(String position) {
            this.position = position;
        }
    
        public String getLat() {
            return lat;
        }
    
        public void setLat(String lat) {
            this.lat = lat;
        }
    }
    

    第二步:新建线程访问数据,通过handler与主线程通信。

          一开始,直接在主线程中访问服务器,最终发现失败了,查阅了资料后才知道:android4.0以后的版本,主线程(UI线程)不在支持网络请求,原因大概是影响主线程,速度太慢,容易卡机,所以需要开启新的线程请求数据。

     /**
                     * 通过handler与主线程通信
                     */
                    final Handler handler = new Handler()
                    {
                        @Override
                        public void handleMessage(Message msg) {
                            super.handleMessage(msg);
                            Bundle data = msg.getData();
                            String err = data.getString("err");
                            /**
                             * 查询成功
                             */
                            if("0".equals(err))
                            {
                                List<GasStationModel> listGasStation = (List<GasStationModel> )data.getSerializable("listGasStation");
                                Toast.makeText(BaiDuMapActivity.this, "查询成功"+listGasStation.size(), Toast.LENGTH_LONG).show();
                                }
                            else
                            {
                                Toast.makeText(BaiDuMapActivity.this, "附近没有加油站信息", Toast.LENGTH_LONG).show();
                            }
                            //Log.i("mylog", "请求结果为-->" + val);
                            // TODO
                            // UI界面的更新等相关操作
                        }
                    };
                    /**
                     * 开启一个新的线程,访问服务器
                     * 当有数据返回时,通过handler传递消息
                     */
    
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            //请求数据
                            List<GasStationModel> listGasStation = ConnectServer.searchNearGas(params);
                            //发送消息
                            Message message = new Message();
                            Bundle bundle = new Bundle();
                            if(listGasStation!=null)
                            {
                                bundle.putSerializable("listGasStation", (Serializable) listGasStation);
                                bundle.putString("err","0");//成功
                            }
                            else
                                bundle.putString("err","1");//失败
                            message.setData(bundle);
                            handler.sendMessage(message);
                        }
                    }).start();

    第三步:ConnectServer.java访问服务器类

           考虑到后期对服务器访问还会很多,所以就单独建了一个访问服务器的类。

           实现对服务器的访问,搜索周边加油站。

    /**
     * Created by chen on 2016/4/2.
     */
    public class ConnectServer {
    
        
        public static List<GasStationModel> searchNearGas(Map<String, String> params)
        {
            /**
             * 请求地址
             */
            String path = serverURL+"gas/searchNear?key="+key+"&";
            /**
             * 添加参数
             */
            List<GasStationModel> listGasStation = new ArrayList<GasStationModel>();
            try {
                StringBuilder url = new StringBuilder(path);
                URL nURL = new URL("http://www.baidu.com");
                //url.append("?");
                for (Map.Entry<String, String> entry : params.entrySet()) {
                    url.append(entry.getKey()).append("=");
                    url.append(URLEncoder.encode(entry.getValue(), "UTF-8"));// 编码
                    url.append('&');
                }
                url.deleteCharAt(url.length() - 1);
                HttpURLConnection connection = (HttpURLConnection) new URL(
                        url.toString()).openConnection();
               //HttpURLConnection connection = (HttpURLConnection) nURL.openConnection();
                connection.setConnectTimeout(5000);
                connection.setRequestMethod("GET");
    
    
                String result = "";
                InputStream in = connection.getInputStream();
                try {
                    Thread.sleep(300);
                    result = read(connection.getInputStream());
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
              
                /**
                 * 解析JSON数据等等<span style="font-family:Microsoft YaHei;">操作</span>
                 */
               
                }
            }catch (Exception e )
            {
                e.printStackTrace();
            }
            return listGasStation;
        }
        private static String read(InputStream in) throws Exception {
            byte[] data;
    
            int length = in.available();
            ByteArrayOutputStream bout = new ByteArrayOutputStream();
            byte[]buf = new byte[1024];
            int len = 0;
    
            while((len = in.read(buf))!=-1){
                bout.write(buf, 0, len);
    
            }
            data = bout.toByteArray();
            return new String(data,"UTF-8");
        }
    }
    

    三.效果与分析


           其实整个流程的思路还是很简单:定位获取当前数据->访问加油站数据接口获得周边加油站位置信息->回调,在地图上显示。但是,实现起来有些地方还是很费心,比如手机端接收数据不完整的情况。

    展开全文
  • 本文主要讲解如何通过百度地图API根据某个经纬度值(地理坐标)查询对应的地址信息以及该地址周边的POI(Point of Interest,兴趣点)信息。  百度地图移动版API不仅包含构建地图的基本接口,还集成了众多搜索服务...

      本文主要讲解如何通过百度地图API根据某个经纬度值(地理坐标)查询对应的地址信息以及该地址周边的POI(Point of Interest,兴趣点)信息。
          百度地图移动版API不仅包含构建地图的基本接口,还集成了众多搜索服务,包括:位置检索、周边检索、范围检索、公交检索、驾乘检索、步行检索、地址信息查询等。
          百度地图移动版API提供的搜索服务主要是通过初始化MKSearch类,注册搜索结果的监听对象MKSearchListener来实现异步搜索服务。首先需要自定义一个MySearchListener类,它实现MKSearchListener接口,然后通过实现接口中不同的回调方法,来获得对应的搜索结果。MySearchListener类的定义如下:
         

    [java]  view plain copy
    1. /** 
    2.  * 实现MKSearchListener接口,用于实现异步搜索服务,得到搜索结果 
    3.  *  
    4.  * @author liufeng 
    5.  */  
    6. public class MySearchListener implements MKSearchListener {  
    7.     /** 
    8.      * 根据经纬度搜索地址信息结果 
    9.      * @param result 搜索结果 
    10.      * @param iError 错误号(0表示正确返回) 
    11.      */  
    12.     @Override  
    13.     public void onGetAddrResult(MKAddrInfo result, int iError) {  
    14.     }  
    15.   
    16.     /** 
    17.      * 驾车路线搜索结果 
    18.      * @param result 搜索结果 
    19.      * @param iError 错误号(0表示正确返回) 
    20.      */  
    21.     @Override  
    22.     public void onGetDrivingRouteResult(MKDrivingRouteResult result, int iError) {  
    23.     }  
    24.   
    25.     /** 
    26.      * POI搜索结果(范围检索、城市POI检索、周边检索) 
    27.      * @param result 搜索结果 
    28.      * @param type 返回结果类型(11,12,21:poi列表 7:城市列表) 
    29.      * @param iError 错误号(0表示正确返回) 
    30.      */  
    31.     @Override  
    32.     public void onGetPoiResult(MKPoiResult result, int type, int iError) {  
    33.     }  
    34.   
    35.     /** 
    36.      * 公交换乘路线搜索结果 
    37.      * @param result 搜索结果 
    38.      * @param iError 错误号(0表示正确返回) 
    39.      */  
    40.     @Override  
    41.     public void onGetTransitRouteResult(MKTransitRouteResult result, int iError) {  
    42.     }  
    43.   
    44.     /** 
    45.      * 步行路线搜索结果 
    46.      * @param result 搜索结果 
    47.      * @param iError 错误号(0表示正确返回) 
    48.      */  
    49.     @Override  
    50.     public void onGetWalkingRouteResult(MKWalkingRouteResult result, int iError) {  
    51.     }  
    52. }  

    说明:上面的类定义只是在说明MKSearchListener类的5个方法的作用,全都是空实现,并未给出具体的实现。根据你要检索的内容,再去具体实现上面对应的方法,就能获取到搜索结果。例如:1)你想通过一个地理坐标(经纬度值)来搜索地址信息,那么只需要具体实现上面的onGetAddrResult()方法就能得到搜索结果;2)如果你想搜索驾车路线信息,只需要具体实现onGetDrivingRouteResult()方法就能得到搜索结果。

    紧接着,需要初始化MKSearch类:
         

    [java]  view plain copy
    1. // 初始化MKSearch  
    2. mMKSearch = new MKSearch();  
    3. mMKSearch.init(mapManager, new MySearchListener());  

    经过上面两步之后,就可以通过调用MKSearch所提供的一些检索方法来搜索你想要的信息了。
          下面给出一个具体的示例:根据某个经纬度值(地理坐标)查询对应的地址信息以及该地址周边的POI(Point of Interest,兴趣点)信息。
    1)布局文件res/layout/query_address.xml
         
    [xhtml]  view plain copy
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:layout_width="fill_parent"  
    4.     android:layout_height="fill_parent">  
    5.     <LinearLayout   
    6.         android:orientation="vertical"  
    7.         android:layout_width="fill_parent"  
    8.         android:layout_height="fill_parent"  
    9.         >  
    10.         <TextView  
    11.             android:layout_width="fill_parent"  
    12.             android:layout_height="wrap_content"  
    13.             android:text="经度:"  
    14.         />  
    15.         <EditText android:id="@+id/longitude_input"  
    16.             android:layout_width="fill_parent"  
    17.             android:layout_height="wrap_content"   
    18.             android:text="106.720397"  
    19.         />  
    20.           
    21.         <TextView  
    22.             android:layout_width="fill_parent"  
    23.             android:layout_height="wrap_content"  
    24.             android:text="纬度:"  
    25.         />  
    26.         <EditText android:id="@+id/latitude_input"  
    27.             android:layout_width="fill_parent"  
    28.             android:layout_height="wrap_content"   
    29.             android:text="26.597239"  
    30.         />  
    31.       
    32.         <Button android:id="@+id/query_button"  
    33.             android:layout_width="wrap_content"  
    34.             android:layout_height="wrap_content"  
    35.             android:layout_gravity="right"  
    36.             android:text="地址查询"  
    37.         />  
    38.           
    39.         <TextView android:id="@+id/address_text"  
    40.             android:layout_width="wrap_content"  
    41.             android:layout_height="wrap_content"  
    42.         />  
    43.         <!--   
    44.             虽然定义了MapView,但是设置了android:visibility="gone"将其隐藏  
    45.             因为本示例并不需要显示地图,但不定义又不行(baidu map api的要求)   
    46.         -->  
    47.         <com.baidu.mapapi.MapView android:id="@+id/map_View"  
    48.             android:layout_width="fill_parent"  
    49.             android:layout_height="fill_parent"  
    50.             android:clickable="true"  
    51.             android:visibility="gone"  
    52.         />  
    53.     </LinearLayout>  
    54. </ScrollView>  

    2)继承com.baidu.mapapi.MapActivity的Activity类
          
    [java]  view plain copy
    1. package com.liufeng.baidumap;  
    2.   
    3. import android.os.Bundle;  
    4. import android.view.View;  
    5. import android.view.View.OnClickListener;  
    6. import android.widget.Button;  
    7. import android.widget.EditText;  
    8. import android.widget.TextView;  
    9.   
    10. import com.baidu.mapapi.BMapManager;  
    11. import com.baidu.mapapi.GeoPoint;  
    12. import com.baidu.mapapi.MKAddrInfo;  
    13. import com.baidu.mapapi.MKDrivingRouteResult;  
    14. import com.baidu.mapapi.MKPoiInfo;  
    15. import com.baidu.mapapi.MKPoiResult;  
    16. import com.baidu.mapapi.MKSearch;  
    17. import com.baidu.mapapi.MKSearchListener;  
    18. import com.baidu.mapapi.MKTransitRouteResult;  
    19. import com.baidu.mapapi.MKWalkingRouteResult;  
    20. import com.baidu.mapapi.MapActivity;  
    21.   
    22. /** 
    23.  * 根据经纬度查询地址信息 
    24.  *  
    25.  * @author liufeng 
    26.  * @date 2011-05-03 
    27.  */  
    28. public class QueryAddressActivity extends MapActivity {  
    29.     // 定义地图引擎管理类  
    30.     private BMapManager mapManager;  
    31.     // 定义搜索服务类  
    32.     private MKSearch mMKSearch;  
    33.   
    34.     private EditText longitudeEditText;  
    35.     private EditText latitudeEditText;  
    36.     private TextView addressTextView;  
    37.     private Button queryButton;  
    38.   
    39.     @Override  
    40.     public void onCreate(Bundle savedInstanceState) {  
    41.         super.onCreate(savedInstanceState);  
    42.         setContentView(R.layout.query_address);  
    43.   
    44.         // 初始化MapActivity  
    45.         mapManager = new BMapManager(getApplication());  
    46.         // init方法的第一个参数需填入申请的API Key  
    47.         mapManager.init("285B415EBAB2A92293E85502150ADA7F03C777C4"null);  
    48.         super.initMapActivity(mapManager);  
    49.   
    50.         // 初始化MKSearch  
    51.         mMKSearch = new MKSearch();  
    52.         mMKSearch.init(mapManager, new MySearchListener());  
    53.   
    54.         // 通过id查询在布局文件中定义的控件  
    55.         longitudeEditText = (EditText) findViewById(R.id.longitude_input);  
    56.         latitudeEditText = (EditText) findViewById(R.id.latitude_input);  
    57.         addressTextView = (TextView) findViewById(R.id.address_text);  
    58.         queryButton = (Button) findViewById(R.id.query_button);  
    59.   
    60.         // 给地址查询按钮设置单击事件监听器  
    61.         queryButton.setOnClickListener(new OnClickListener() {  
    62.             @Override  
    63.             public void onClick(View v) {  
    64.                 // 用户输入的经度值  
    65.                 String longitudeStr = longitudeEditText.getText().toString();  
    66.                 // 用户输入的纬度值  
    67.                 String latitudeStr = latitudeEditText.getText().toString();  
    68.   
    69.                 try {  
    70.                     // 将用户输入的经纬度值转换成int类型  
    71.                     int longitude = (int) (1000000 * Double.parseDouble(longitudeStr));  
    72.                     int latitude = (int) (1000000 * Double.parseDouble(latitudeStr));  
    73.   
    74.                     // 查询该经纬度值所对应的地址位置信息  
    75.                     mMKSearch.reverseGeocode(new GeoPoint(latitude, longitude));  
    76.                 } catch (Exception e) {  
    77.                     addressTextView.setText("查询出错,请检查您输入的经纬度值!");  
    78.                 }  
    79.             }  
    80.         });  
    81.     }  
    82.   
    83.     @Override  
    84.     protected boolean isRouteDisplayed() {  
    85.         return false;  
    86.     }  
    87.   
    88.     @Override  
    89.     protected void onDestroy() {  
    90.         if (mapManager != null) {  
    91.             // 程序退出前需调用此方法  
    92.             mapManager.destroy();  
    93.             mapManager = null;  
    94.         }  
    95.         super.onDestroy();  
    96.     }  
    97.   
    98.     @Override  
    99.     protected void onPause() {  
    100.         if (mapManager != null) {  
    101.             // 终止百度地图API  
    102.             mapManager.stop();  
    103.         }  
    104.         super.onPause();  
    105.     }  
    106.   
    107.     @Override  
    108.     protected void onResume() {  
    109.         if (mapManager != null) {  
    110.             // 开启百度地图API  
    111.             mapManager.start();  
    112.         }  
    113.         super.onResume();  
    114.     }  
    115.   
    116.     /** 
    117.      * 内部类实现MKSearchListener接口,用于实现异步搜索服务 
    118.      *  
    119.      * @author liufeng 
    120.      */  
    121.     public class MySearchListener implements MKSearchListener {  
    122.         /** 
    123.          * 根据经纬度搜索地址信息结果 
    124.          *  
    125.          * @param result 搜索结果 
    126.          * @param iError 错误号(0表示正确返回) 
    127.          */  
    128.         @Override  
    129.         public void onGetAddrResult(MKAddrInfo result, int iError) {  
    130.             if (result == null) {  
    131.                 return;  
    132.             }  
    133.             StringBuffer sb = new StringBuffer();  
    134.             // 经纬度所对应的位置  
    135.             sb.append(result.strAddr).append("/n");  
    136.   
    137.             // 判断该地址附近是否有POI(Point of Interest,即兴趣点)  
    138.             if (null != result.poiList) {  
    139.                 // 遍历所有的兴趣点信息  
    140.                 for (MKPoiInfo poiInfo : result.poiList) {  
    141.                     sb.append("----------------------------------------").append("/n");  
    142.                     sb.append("名称:").append(poiInfo.name).append("/n");  
    143.                     sb.append("地址:").append(poiInfo.address).append("/n");  
    144.                     sb.append("经度:").append(poiInfo.pt.getLongitudeE6() / 1000000.0f).append("/n");  
    145.                     sb.append("纬度:").append(poiInfo.pt.getLatitudeE6() / 1000000.0f).append("/n");  
    146.                     sb.append("电话:").append(poiInfo.phoneNum).append("/n");  
    147.                     sb.append("邮编:").append(poiInfo.postCode).append("/n");  
    148.                     // poi类型,0:普通点,1:公交站,2:公交线路,3:地铁站,4:地铁线路  
    149.                     sb.append("类型:").append(poiInfo.ePoiType).append("/n");  
    150.                 }  
    151.             }  
    152.             // 将地址信息、兴趣点信息显示在TextView上  
    153.             addressTextView.setText(sb.toString());  
    154.         }  
    155.   
    156.         /** 
    157.          * 驾车路线搜索结果 
    158.          *  
    159.          * @param result 搜索结果 
    160.          * @param iError 错误号(0表示正确返回) 
    161.          */  
    162.         @Override  
    163.         public void onGetDrivingRouteResult(MKDrivingRouteResult result, int iError) {  
    164.         }  
    165.   
    166.         /** 
    167.          * POI搜索结果(范围检索、城市POI检索、周边检索) 
    168.          *  
    169.          * @param result 搜索结果 
    170.          * @param type 返回结果类型(11,12,21:poi列表 7:城市列表) 
    171.          * @param iError 错误号(0表示正确返回) 
    172.          */  
    173.         @Override  
    174.         public void onGetPoiResult(MKPoiResult result, int type, int iError) {  
    175.         }  
    176.   
    177.         /** 
    178.          * 公交换乘路线搜索结果 
    179.          *  
    180.          * @param result 搜索结果 
    181.          * @param iError 错误号(0表示正确返回) 
    182.          */  
    183.         @Override  
    184.         public void onGetTransitRouteResult(MKTransitRouteResult result, int iError) {  
    185.         }  
    186.   
    187.         /** 
    188.          * 步行路线搜索结果 
    189.          *  
    190.          * @param result 搜索结果 
    191.          * @param iError 错误号(0表示正确返回) 
    192.          */  
    193.         @Override  
    194.         public void onGetWalkingRouteResult(MKWalkingRouteResult result, int iError) {  
    195.         }  
    196.     }  
    197. }  
       
    3)AndroidManifest.xml中的配置
         
    [xhtml]  view plain copy
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    3.       package="com.liufeng.baidumap"  
    4.       android:versionCode="1"  
    5.       android:versionName="1.0">  
    6.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
    7.         <activity android:name=".QueryAddressActivity" android:label="@string/app_name">  
    8.             <intent-filter>  
    9.                 <action android:name="android.intent.action.MAIN" />  
    10.                 <category android:name="android.intent.category.LAUNCHER" />  
    11.             </intent-filter>  
    12.         </activity>  
    13.     </application>  
    14.     <uses-sdk android:minSdkVersion="4" />  
    15.   
    16.     <!-- 访问网络的权限 -->  
    17.     <uses-permission android:name="android.permission.INTERNET" />  
    18.     <!-- 访问精确位置的权限 -->  
    19.     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  
    20.     <!-- 访问网络状态的权限 -->  
    21.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
    22.     <!-- 访问WIFI网络状态的权限 -->  
    23.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
    24.     <!-- 改变WIFI网络状态的权限 -->  
    25.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  
    26.     <!-- 读写存储卡的权限 -->  
    27.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
    28.     <!-- 读取电话状态的权限 -->  
    29.     <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
    30. </manifest>   

    4)运行结果截图及说明
          
    程序在模拟器上运行的初始效果如上图所示。可以看出,地图并没有显示出来,这和我们在设计时布局时所设想的一样;另外两个输入框中也分别显示了默认给出的经纬度值。
          点击“地址查询”按钮后,将看到如下图所示包含了查询结果的界面:
          
    说明:图上的“贵州省贵阳市云岩区普陀路”正是我们要查询的地理坐标 (经度:106.720397,纬度:26.597239)所对应的地址信息;同时该地址信息下方还显示出了该地址附近的10个兴趣点(POI),每个兴趣点分别包含了“名称”、“地址”、“经纬度”、“电话”、“邮编”和“兴趣点类型”信息。

    备注:如果本文的示例继续做下去,就应该将MapView显示出来,同时结合第8篇文章“[008] 百度地图API之ItemizedOverlay的使用(Android)”所介绍的内容将地址信息和兴趣点标注在地图上。我想这两方面的内容都已做过详细讲解并给出了示例,再来实现这个应该并不是什么难事,看文章的你就动动手来完成它吧!

    展开全文
  • 本文主要讲解如何通过百度地图API根据某个经纬度值(地理坐标)查询对应的地址信息以及该地址周边的POI(Point of Interest,兴趣点)信息。  百度地图移动版API不仅包含构建地图的基本接口,还集成了众多搜索服务...
  • 术语“地址解析”通常是指将人类可读的地址转换成地图上的位置。反之,将地图上的位置转换成人类...例如,下列查询包含了布鲁克林某一位置的纬度/经度值: http://maps.google.com/maps/api/geocode/json?latlng=40.7
  • 本文主要讲解如何通过百度地图API根据某个经纬度值(地理坐标)查询对应的地址信息以及该地址周边的POI(Point of Interest,兴趣点)信息。  百度地图移动版API不仅包含构建地图的基本接口,还集成了众多搜索服务...
  • 美国邮编大全及邮政编码规范

    千次阅读 2020-01-07 13:26:12
    和美国有通信或贸易往来的朋友必须弄清楚的就是对方的邮编,因为邮编...美国邮政编码 (ZIP Code)是美国邮政服务 (United States Postal Service, USPS)使用的一种编码,一般常以大楷写作ZIP。ZIP是Zone Improvement...
  • 上一篇文章介绍了百度鹰眼sdk监控进出围栏的功能,本篇将详细介绍百度地图中POI检索、公交查询、行政区边界坐标获取、两点之间的路径规划和地理编码(坐标和地址之间的转换)。 一 POI检索 1.POI简介 POI是兴趣点的...
  • 本文主要讲解如何通过百度地图API根据某个经纬度值(地理坐标)查询对应的地址信息以及该地址周边的POI(Point of Interest,兴趣点)信息。  百度地图移动版API不仅包含构建地图的基本接口,还集成了众多搜索服务...
  • 本文主要讲解如何通过百度地图API根据某个经纬度值(地理坐标)查询对应的地址信息以及该地址周边的POI(Point of Interest,兴趣点)信息。  百度地图移动版API不仅包含构建地图的基本接口,还集成了众多搜索服务...
  • 本文主要讲解如何通过百度地图API根据某个经纬度值(地理坐标)查询对应的地址信息以及该地址周边的POI(Point of Interest,兴趣点)信息。  百度地图移动版API不仅包含构建地图的基本接口,还集成了众多搜索服务...
  • 确实echarts可以画地图。但是里面的边界数据并不精确。如果你需要做的项目是边界必须特别精确的,而是最新的。你得自己获取。echarts里的china.js数据已经老了。 前期准备 首先我们需要城市信息。哪里...
  • 本文主要讲解如何通过百度地图API根据某个经纬度值(地理坐标)查询对应的地址信息以及该地址周边的POI(Point of Interest,兴趣点)信息。 百度地图移动版API不仅包含构建地图的基本接口,还集成了众多搜索服务,...
  • Tableau 地图

    2019-06-11 21:31:00
    全球的机场代码,国家,城市,地区的邮政编码,代码,经纬度 自定义的TMS的离线地图的数据 2 Tableau 自定义数据地理编码 当tableau无法识别数据中的地理数据时候,需要自定义地图数据,进行地图数据修正 ...
  • 我用OnMapOnclickListener里面只有MapPoi,只有地点名称坐标 ,其他监听点击地图怎么获取点击地点的邮编

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,973
精华内容 789
关键字:

地图查邮编