Android根据IP获取地理位置,精确到经纬度

摘要:每一个联网的设备都有一个IP地址,移动设备也不例外,如何定位Android手机当前的地理位置呢?很简单,我们依然可以利用 IP地址来获取Android手机的当前位置,可以精确到经纬度。

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

package eoe.demo;
import com.mapdigit.gis.DigitalMap;
import com.mapdigit.gis.MapPoint;
import com.mapdigit.gis.geometry.GeoLatLng;
import com.mapdigit.gis.service.IIpAddressGeocodingListener;
import com.mapdigit.gis.service.IpAddressLocation;
import com.pstreets.gisengine.R;
import com.pstreets.gisengine.SharedMapInstance;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
public class MapIpSearch extends Activity implements
IIpAddressGeocodingListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public void onStart() {
super.onStart();
GeoLatLng center = new GeoLatLng(32.0616667, 118.7777778);
SharedMapInstance.map.setCenter(center, 15,
com.mapdigit.gis.raster.MapType.MICROSOFTCHINA);
SharedMapInstance.map.setIpAddressGeocodingListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mapgeocoding_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.findaddress:
SharedMapInstance.map.getIpLocations(“58.192.32.1″);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void done(String query, IpAddressLocation result) {
if (result != null && result.error.length() == 0
&& result.longitude.length() > 0
&& result.longitude.length() > 0) {
try {
MapPoint mapPoint = new MapPoint();
String latLng = ”[" + result.longitude + "," + result.latitude+ ",0]“;
mapPoint.point = DigitalMap.fromStringToLatLng(latLng);
mapPoint.setName(result.organization);
mapPoint.setNote(result.city + ” ” + result.country);
SharedMapInstance.map.panTo(mapPoint.point);
catch (Exception e) {
result.error = ”IP_NOT_FOUND”;
}
}
}
@Override
public void readProgress(int bytes, int total) {
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值