Mapbox 显示来自我的互联网服务提供商 (ISP) IP 地址的位置
Mapbox showing location from my Internet service provider(ISP) IP address
Mapbox 显示的位置来自我的互联网服务提供商 (ISP) IP 地址,而不是来自通过 WIFI 连接到家庭网络的台式机的 IP 地址,但是,它确实跟踪了我连接到的移动设备的正确位置同一个家庭网络。
我该如何解决这个问题?
Index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src='https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.js'></script>
<script src="https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-directions/v4.1.0/mapbox-gl-directions.js"></script>
<link href='https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.css' rel='stylesheet'/>
<link rel="stylesheet" href="https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-directions/v4.1.0/mapbox-gl-directions.css" type="text/css"/>
<title>Mapbox Test</title>
</head>
<body>
<div id='map' ></div>
<script src="js/basic_map.js" defer></script>
</body>
</html>
basic_map.js:
// mapbox access Key
mapboxgl.accessToken = ACCESS_TOKEN;
// Get My Current Location
navigator.geolocation.getCurrentPosition(successLocation, errorLocation, { enableHighAccuracy: true});
function successLocation(position)
{
center = [position.coords.longitude, position.coords.latitude];
zoom = 15;
setupMap(center, zoom);
}
function errorLocation()
{
// Fallback: Cape Town
center = [18.4241, -33.9249];
zoom = 10;
setupMap(center, zoom);
}
function setupMap(center,zoom)
{
const map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v11',
center: center,
zoom: zoom
});
map.on('load', function()
{
// Add Navigation Buttons
const nav = new mapboxgl.NavigationControl();
map.addControl(nav, 'top-right');
// Add Marker
const marker = new mapboxgl.Marker()
.setLngLat(center)
.addTo(map);
});
}
这正是地理定位工作原理所固有的。移动设备内置 GPS,外加 3G/4G、wi-fi 等——有很多方法可以知道它在哪里。台式计算机没有该信息:只有它的 IP 地址。所以地理定位服务正在做出最好的猜测,并在您的 ISP 处结束。
Mapbox 显示的位置来自我的互联网服务提供商 (ISP) IP 地址,而不是来自通过 WIFI 连接到家庭网络的台式机的 IP 地址,但是,它确实跟踪了我连接到的移动设备的正确位置同一个家庭网络。
我该如何解决这个问题?
Index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src='https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.js'></script>
<script src="https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-directions/v4.1.0/mapbox-gl-directions.js"></script>
<link href='https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.css' rel='stylesheet'/>
<link rel="stylesheet" href="https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-directions/v4.1.0/mapbox-gl-directions.css" type="text/css"/>
<title>Mapbox Test</title>
</head>
<body>
<div id='map' ></div>
<script src="js/basic_map.js" defer></script>
</body>
</html>
basic_map.js:
// mapbox access Key
mapboxgl.accessToken = ACCESS_TOKEN;
// Get My Current Location
navigator.geolocation.getCurrentPosition(successLocation, errorLocation, { enableHighAccuracy: true});
function successLocation(position)
{
center = [position.coords.longitude, position.coords.latitude];
zoom = 15;
setupMap(center, zoom);
}
function errorLocation()
{
// Fallback: Cape Town
center = [18.4241, -33.9249];
zoom = 10;
setupMap(center, zoom);
}
function setupMap(center,zoom)
{
const map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v11',
center: center,
zoom: zoom
});
map.on('load', function()
{
// Add Navigation Buttons
const nav = new mapboxgl.NavigationControl();
map.addControl(nav, 'top-right');
// Add Marker
const marker = new mapboxgl.Marker()
.setLngLat(center)
.addTo(map);
});
}
这正是地理定位工作原理所固有的。移动设备内置 GPS,外加 3G/4G、wi-fi 等——有很多方法可以知道它在哪里。台式计算机没有该信息:只有它的 IP 地址。所以地理定位服务正在做出最好的猜测,并在您的 ISP 处结束。