Android引路蜂地图开发示例:IP地址查询

jerry 地图开发 2015年11月26日 收藏

IP地址查询,可以根据IP地址查询到该IP所在的地理经纬度坐标,比如下述例子查询IP 地址58.192.32.1,所在经纬度为118.777802,32.061699,为南京大学所在地。

  1. package com.pstreets.gisengine.demo;
  2.  
  3. import com.mapdigit.gis.DigitalMap;
  4. import com.mapdigit.gis.MapPoint;
  5. import com.mapdigit.gis.geometry.GeoLatLng;
  6. import com.mapdigit.gis.service.IIpAddressGeocodingListener;
  7. import com.mapdigit.gis.service.IpAddressLocation;
  8. import com.pstreets.gisengine.R;
  9. import com.pstreets.gisengine.SharedMapInstance;
  10.  
  11. import android.app.Activity;
  12. import android.os.Bundle;
  13. import android.view.Menu;
  14. import android.view.MenuInflater;
  15. import android.view.MenuItem;
  16.  
  17. public class MapIpSearch extends Activity implements
  18.   IIpAddressGeocodingListener {
  19.  
  20.  @Override
  21.  public void onCreate(Bundle savedInstanceState) {
  22.   super.onCreate(savedInstanceState);
  23.   setContentView(R.layout.main);
  24.  }
  25.  
  26.  @Override
  27.  public void onStart() {
  28.   super.onStart();
  29.   GeoLatLng center = new GeoLatLng(32.0616667, 118.7777778);
  30.   SharedMapInstance.map.setCenter(center, 15,
  31.     com.mapdigit.gis.raster.MapType.MICROSOFTCHINA);
  32.   SharedMapInstance.map.setIpAddressGeocodingListener(this);
  33.  
  34.  }
  35.  
  36.  @Override
  37.  public boolean onCreateOptionsMenu(Menu menu) {
  38.   MenuInflater inflater = getMenuInflater();
  39.   inflater.inflate(R.menu.mapgeocoding_menu, menu);
  40.   return true;
  41.  }
  42.  
  43.  @Override
  44.  public boolean onOptionsItemSelected(MenuItem item) {
  45.   // Handle item selection
  46.   switch (item.getItemId()) {
  47.   case R.id.findaddress:
  48.    SharedMapInstance.map.getIpLocations("58.192.32.1");
  49.    return true;
  50.  
  51.   default:
  52.    return super.onOptionsItemSelected(item);
  53.   }
  54.  
  55.  }
  56.  
  57.  @Override
  58.  public void done(String query, IpAddressLocation result) {
  59.   if (result != null && result.error.length() == 0
  60.     && result.longitude.length() > 0
  61.     && result.longitude.length() > 0) {
  62.    try {
  63.  
  64.     MapPoint mapPoint = new MapPoint();
  65.     String latLng = "[" + result.longitude + "," + result.latitude
  66.       + ",0]";
  67.     mapPoint.point = DigitalMap.fromStringToLatLng(latLng);
  68.     mapPoint.setName(result.organization);
  69.     mapPoint.setNote(result.city + " " + result.country);
  70.     SharedMapInstance.map.panTo(mapPoint.point);
  71.    } catch (Exception e) {
  72.  
  73.     result.error = "IP_NOT_FOUND";
  74.    }
  75.   }
  76.  
  77.  }
  78.  
  79.  @Override
  80.  public void readProgress(int bytes, int total) {
  81.  
  82.  }
  83.  
  84. }

注:目前IP查询结果总是以英文返回,如上述结果详细内容。
ISP:”China Education and Research Network”
Organization: “Nan Jing University”
Country: “CN”
City: “Nanjing”
若想知道该经纬度对应的地名,可以使用地址反编码服务。
你可以输入 127.0.0.1 查询本机地址。