首页 > 代码库 > Android中由IP地址查询经纬度坐标的实例

Android中由IP地址查询经纬度坐标的实例

    大家都知道,根据IP地址就可以知道它所在的具体位置,在Android中同样可以由IP地址得到它的位置,即具体的地理经纬度坐标。

       本文就直接以代码的方式演示如何根据IP地址查询地理经纬度坐标位置,下面的例子中演示的就是由58.192.32.1这个IP地址查询到其所在的经纬度坐标为(118.777802,32.061699)。

Java代码
  1. package eoe.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. switch (item.getItemId()) {   
  46. case R.id.findaddress:   
  47. SharedMapInstance.map.getIpLocations("58.192.32.1");   
  48. return true;   
  49.   
  50. default:   
  51. return super.onOptionsItemSelected(item);   
  52. }   
  53.   
  54. }   
  55.   
  56. @Override  
  57. public void done(String query, IpAddressLocation result) {   
  58. if (result != null && result.error.length() == 0  
  59. && result.longitude.length() > 0  
  60. && result.longitude.length() > 0) {   
  61. try {   
  62.   
  63. MapPoint mapPoint = new MapPoint();   
  64. String latLng = "[" + result.longitude + "," + result.latitude+ ",0]";   
  65. mapPoint.point = DigitalMap.fromStringToLatLng(latLng);   
  66. mapPoint.setName(result.organization);   
  67. mapPoint.setNote(result.city + " " + result.country);   
  68. SharedMapInstance.map.panTo(mapPoint.point);   
  69. catch (Exception e) {   
  70.   
  71. result.error = "IP_NOT_FOUND";   
  72. }   
  73. }   
  74.   
  75. }   
  76.   
  77. @Override  
  78. public void readProgress(int bytes, int total) {   
  79.   
  80. }   
  81.   
  82. }