利用Google Maps和IPInfo API显示地理位置

在本文中,将探讨如何使用Google Maps API和IPInfo API来获取用户的地理位置信息,并在网页上显示地图。这是一个基础的应用程序,用于展示如何结合使用这些API来创建自己的内容。

代码的起点是在W3 Schools上看到了一个教程。IPInfo是在之前的项目中发现的一个网站。想要使用IPInfo提供的地理位置坐标来制作一个至少显示ISP路由互联网连接的地图!

使用代码

IPINFO.IO是一个API,用于获取IP地址的位置信息,或者至少是ISP提供的API。访问IPinfo.io网站,它会提供IP地址以及一些关于位置的额外信息。

使用Google Maps所需的信息是纬度和经度。API提供了包含上述信息的JSON。这个示例有点不足,因为它缺少了城市和区域的数据,这是因为ISP定位IP地址的位置。API通过JQuery、Ruby、NodeJS、Python和curl提供一些信息。

在应用程序中,获取JSON并将其放入一个名为place的变量中。Object Grid将包含API提供的所有信息。以下是从控制台复制的示例。

Object { ip: "69.34.118.3", hostname: "mo-69-34-118-3.sta.embarqhsd.net", city: "", region: "", country: "US", loc: "37.7510,-97.8220", org: "AS18494 Embarq Corporation" }

以下代码将生成此代码。可以通过调用grid.loc来提取位置。然后需要分割坐标,因为映射代码在读取组合坐标时有一些问题。所以将它们分割以用作坐标。

// 调用API var place = $.getJSON( 'http://ipinfo.io', function(grid){ console.log(grid.ip) // 检查IP console.log(grid.loc) var loc = grid.loc; // 检查Grid //分割坐标 var str_array = loc.split( ',' ); });

Google MapsAPI

如上所述,坐标是正值,然后是负值。第二个坐标的负值表示西半球,正值表示东半球。因此,德国或希腊的位置将有两个正值。美国大陆和加拿大将有一个正值然后是负值。澳大利亚将有一个负值用于N/S,然后是正值用于E/W,而南美洲将有两个负值。

  • 蒙得维的亚乌拉圭 -34.9011, -56.1645
  • 澳大利亚珀斯 -31.9535, 115.8570
  • 德国柏林 52.5200, 13.4050
  • 希腊雅典 37.9838, 23.7275
  • 美国堪萨斯城 39.0997, -94.5786

首先需要添加对API的引用以及其JS:

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true"></script>

然后,只需要两个JS片段;一个是想映射坐标的地方,然后是地图美学。在下面的例子中,地图的缩放设置为10,坐标位置被居中到地图上。第二部分的代码采用一个HTML元素,然后这个元素被填充了地图。

var firstMap = { center: new google.maps.LatLng(30.8225, 28.9543), zoom: 10 } var map = new google.maps.Map(document.getElementById("map"), firstMap); var secondMap = { center: new google.maps.LatLng(str_array[0], str_array[1]), zoom: 10 } var map2 = new google.maps.Map(document.getElementById("map1"), secondMap); // 其他地图初始化代码... <div class="row"> <div class="col-md-4"> <h4>El Alamein</h4> <div id="map"></div> </div> <div class="col-md-4"> <h4>可能是位置或ISP服务器位置</h4> <div id="map1"></div> </div> <div class="col-md-4"> <h4>Stalingrad</h4> <div id="map2"></div> </div> </div> // 其他地图HTML代码...
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485