获取经纬度工具

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>行政区域工具</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?


v=1.2"></script>
</head>
<body>
<div style="width:520px;height:340px;border:1px solid gray" 


id="container"></div>
<p><input id="startBtn" type="button" οnclick="startTool();" value="开


启取点工具" /><input type="button" οnclick="map.clearOverlays


();document.getElementById('info').innerHTML = '';points=[];" value="清


除" /></p>
<div id="info"></div>
</body>
</html>
<script type="text/javascript">
var map = new BMap.Map("container");                        // 创建Map


实例
map.centerAndZoom("北京", 11);     // 初始化地图,设置中心点坐标和地图级





var key = 1;    //开关
var newpoint;   //一个经纬度
var points = [];    //数组,放经纬度信息
var polyline = new BMap.Polyline(); //折线覆盖物


function startTool(){   //开关函数
if(key==1){
        document.getElementById("startBtn").style.background = "green";
        document.getElementById("startBtn").style.color = "white";
        document.getElementById("startBtn").value = "开启状态";
        key=0;
    }
    else{
        document.getElementById("startBtn").style.background = "red";
        document.getElementById("startBtn").value = "关闭状态";
        key=1;
    }
}
map.addEventListener("click",function(e){   //单击地图,形成折线覆盖物
    newpoint = new BMap.Point(e.point.lng,e.point.lat);
    if(key==0){
    //    if(points[points.length].lng==points[points.length-1].lng)


{alert(111);}
        points.push(newpoint);  //将新增的点放到数组中
        polyline.setPath(points);   //设置折线的点数组
        map.addOverlay(polyline);   //将折线添加到地图上
        document.getElementById("info").innerHTML += "new BMap.Point(" 


+ e.point.lng + "," + e.point.lat + "),</br>";    //输出数组里的经纬度
    }
});
map.addEventListener("dblclick",function(e){   //双击地图,形成多边形覆


盖物
if(key==0){
        map.disableDoubleClickZoom();   //关闭双击放大
var polygon = new BMap.Polygon(points);
        map.addOverlay(polygon);   //将折线添加到地图上
    }
});
</script>
在 Java 中,你可以使用第三方库如 GeoTools 或者 Google 的 Geocoding API 来根据 IP 地址获取经纬度信息。GeoTools 提供了一个基于坐标系转换的功能,而 Google Maps 的 Geocoding API 则允许通过 HTTP 请求将 IP 地址映射到地理位置。 以下是使用 Google Geocoding API 获取经纬度的基本步骤: 1. 首先,你需要在 Google Cloud Platform 注册并启用 Geocoding API,然后获取 API 密钥。 2. 使用 Java 的 HttpURLConnection、HttpClient 等网络工具发送 GET 请求到 `https://maps.googleapis.com/maps/api/geocode/json` 这个地址,并传递查询参数,例如: ``` https://maps.googleapis.com/maps/api/geocode/json?address=<IP>&key=YOUR_API_KEY ``` 3. 接收 JSON 回应,解析其中包含的 "results" 数组,找到第一个结果中的 "geometry.location" 对象,它通常包含经纬度信息(lat 和 lng 属性)。 4. 由于 JSON 数据结构可能会变化,所以使用诸如 Gson、Jackson 或者原生 Java 对 JSON 的支持来解析数据会更可靠。 下面是一个简单的示例,假设你已经有一个 API Key: ```java import org.json.JSONObject; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class Main { private static final String API_KEY = "YOUR_API_KEY"; private static final String IP_ADDRESS = "<IP_ADDRESS>"; public static void main(String[] args) throws Exception { URL url = new URL("https://maps.googleapis.com/maps/api/geocode/json?address=" + IP_ADDRESS + "&key=" + API_KEY); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); try (BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { String line; StringBuilder response = new StringBuilder(); while ((line = in.readLine()) != null) { response.append(line); } JSONObject jsonObject = new JSONObject(response.toString()); JSONArray results = jsonObject.getJSONArray("results"); if (!results.isEmpty()) { JSONObject geometry = results.getJSONObject(0).getJSONObject("geometry"); JSONObject location = geometry.getJSONObject("location"); double lat = location.getDouble("lat"); double lng = location.getDouble("lng"); System.out.printf("Latitude: %f, Longitude: %f\n", lat, lng); } else { System.out.println("No geolocation data found."); } } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值