将用户图钉放在地图中
请注意,如果你不熟悉 google maps api,你可以阅读先前的示例(基础知识)以了解这个小例子。
- 首先,初始化地图。
你可以在 HTML 代码中添加一个地图的元素,并像这样添加 CSS:
<!DOCTYPE html>
<html>
<head>
<style>
/* Always set the map height explicitly to define the size of the div
* element that contains the map. */
#map {
height: 100%;
}
/* Optional: Makes the sample page fill the window. */
html, body {
height: 100%;
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div id="map"></div>
</body>
</html>
现在,你必须使用这样的应答程序脚本将谷歌地图库添加到你的代码中:
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"
async defer></script>
你可以通过 google api 密钥在代码中重新设置 YOUR_API_KEY。这是获取密钥的链接
接下来,你必须在代码中写入一个函数,作为地图的回调(或初始化函数)。在这里,我们只需要添加一个小功能,巫婆,你可以在谷歌找到这里 :
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 8
});
}
现在,你通常在屏幕上有一个基本地图。你可以在谷歌上找到完整的代码
- 第二,找到用户位置。
要请求用户位置,导航器提供了一个非常简单的功能:
navigator.geolocation.getCurrentPosition(showPosition);
请注意,此函数接受参数。如果地理位置成功,则调用此函数。
我们必须创建这个功能。 :)
function showPosition(position) {
alert (position);
}
此功能非常简单,我们必须在更新后才能在用户位置绘制标记。
我们在这里使用的地理位置功能非常简单。你可以获得 w3schools 的完整文档
在他看来,代码看起来像这样:
<!DOCTYPE html>
<html>
<head>
<title>Simple Map</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
/* Always set the map height explicitly to define the size of the div
* element that contains the map. */
#map {
height: 100%;
}
/* Optional: Makes the sample page fill the window. */
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
var map;
navigator.geolocation.getCurrentPosition(showPosition);
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: { lat: -34.397, lng: 150.644 },
zoom: 8
});
}
function showPosition(position) {
console.log(position);
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" async defer></script>
</body>
</html>
- 第三,用标记显示用户在地图上的位置。
要在地图上显示标记,你可以使用示例基础中的功能:
// Create a marker and place it on the map
var marker = new google.maps.Marker({
position: position,
map: map
});
我不会非常准确地详细说明这些代码。你可能现在可以使用以下代码创建标记:new google.maps.Marker({});
,你传递’标记选项’进入包含。你可以在此处查阅 Google 文档。
另请注意,你可以使用 position 参数非常轻松地指定标记的位置。
现在我们必须修改 showPosition
功能。
你可以像这样简单地访问变量位置的 lat 和 lng:
var markerPosition={};
markerPosition.lat=position.coords.latitude;
markerPosition.lng=position.coords.longitude;
像这样,谷歌了解如何简单地访问 lat 和 lng 值。
现在我们添加修改 showPosition
函数以在用户位置添加标记。
function showPosition(position) {
var markerPosition={};
markerPosition.lat=position.coords.latitude;
markerPosition.lng=position.coords.longitude;
// Create a marker and place it on the map
var marker = new google.maps.Marker({
position: markerPosition,
map: map
});
}
- 最后,你的代码应如下所示:
<!DOCTYPE html>
<html>
<head>
<title>Simple Map</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
/* Always set the map height explicitly to define the size of the div
* element that contains the map. */
#map {
height: 100%;
}
/* Optional: Makes the sample page fill the window. */
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
var map;
navigator.geolocation.getCurrentPosition(showPosition);
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: { lat: -34.397, lng: 150.644 },
zoom: 8
});
}
function showPosition(position) {
var markerPosition={};
markerPosition.lat=position.coords.latitude;
markerPosition.lng=position.coords.longitude;
// Create a marker and place it on the map
var marker = new google.maps.Marker({
position: markerPosition,
map: map
});
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" async defer></script>
</body>
</html>