Javascript 如何在谷歌地图上绘制沿着佩格曼路径的多段线?
我正在使用GoogleMaps API用HTML和JavaScript创建一个简单的游戏。我现在的代码在屏幕左侧显示地图视图,在屏幕右侧显示街道视图。当你移动箭头键时,pegman(在谷歌地图中在街道上移动的小家伙)会根据按下的键旋转并前后移动(这是谷歌地图的默认功能)。我想做的是添加一条不断更新的多段线,显示Pegman访问过的所有地方。我一直在参考[这里][1]和[这里][2]的文档。 HTML代码:Javascript 如何在谷歌地图上绘制沿着佩格曼路径的多段线?,javascript,html,google-maps,google-maps-api-3,maps,Javascript,Html,Google Maps,Google Maps Api 3,Maps,我正在使用GoogleMaps API用HTML和JavaScript创建一个简单的游戏。我现在的代码在屏幕左侧显示地图视图,在屏幕右侧显示街道视图。当你移动箭头键时,pegman(在谷歌地图中在街道上移动的小家伙)会根据按下的键旋转并前后移动(这是谷歌地图的默认功能)。我想做的是添加一条不断更新的多段线,显示Pegman访问过的所有地方。我一直在参考[这里][1]和[这里][2]的文档。 HTML代码: <!DOCTYPE html> <html> <head
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="map_with_markers.css">
<script type="text/javascript" src="pegman_lines.js"></script>
</head>
<body>
<h3>A to B</h3>
<div id="map"></div>
<div id="pano"></div>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=YOURAPIKEY&callback=initMap">
</script>
</body>
</html>
[1]: https://developers.google.com/maps/documentation/javascript/streetview?hl=nl#StreetViewEvents
[2]:
A到B
[1]: https://developers.google.com/maps/documentation/javascript/streetview?hl=nl#StreetViewEvents
[2]:
JavaScript代码:
var poly;
var map;
function initMap() {
var mapDiv = document.getElementById('map');
var map = new google.maps.Map(mapDiv, {
center: {lat: 30.565244, lng: -97.671010},
zoom: 14
});
var txstate = {lat: 30.569858, lng: -97.655918};
var panorama = new google.maps.StreetViewPanorama(
document.getElementById('pano'), {
position: txstate,
pov: {
heading: 34,
pitch: 10
}
});
map.setStreetView(panorama);
poly = new google.maps.Polyline({
strokeColor: '#000000',
strokeOpacity: 1.0,
strokeWeight: 3
});
poly.setMap(map);
// Add a listener for the click event
map.addListener('position_change', addLatLng);
}
// Handles click events on a map, and adds a new point to the Polyline.
function addLatLng(event) {
var path = poly.getPath();
// Because path is an MVCArray, we can simply append a new coordinate
// and it will automatically appear.
path.push(event.latLng);
//point A
//hard-coded as Texas State University right now
var image = "https://upload.wikimedia.org/wikipedia/commons/7/73/Farm-Fresh_star.png"; //STAR
var pointA = new google.maps.Marker({
position: {lat: 30.567989, lng: -97.655153},
map: map,
title: 'tx state',
icon: image,
animation: google.maps.Animation.DROP
});
var contentString_A = '<h5>texas state university at round rock</h5>';
var infowindow_A = new google.maps.InfoWindow({
content: contentString_A
});
function info_A(){
infowindow_A.open(map, pointA);
}
//point B
//hard-coded as H-E-B right now
var pointB = new google.maps.Marker({
position: {lat: 30.560619, lng: -97.688338},
map: map,
title: 'heb',
icon: image,
animation: google.maps.Animation.DROP
});
var contentString_B = '<h5>h-e-b</h5>';
var infowindow_B = new google.maps.InfoWindow({
content: contentString_B
});
function info_B(){
infowindow_B.open(map, pointB);
}
pointA.addListener('click', info_A);
pointB.addListener('click', info_B);
function toggleBounce() {
if (marker.getAnimation() !== null) {
marker.setAnimation(null);
} else {
marker.setAnimation(google.maps.Animation.BOUNCE);
}
}
}
var-poly;
var映射;
函数initMap(){
var mapDiv=document.getElementById('map');
var map=new google.maps.map(mapDiv{
中心:{lat:30.565244,lng:-97.671010},
缩放:14
});
var txstate={lat:30.569858,lng:-97.655918};
var panorama=新建google.maps.StreetViewPanorama(
document.getElementById('pano'){
位置:txstate,
pov:{
标题:34,
投球:10
}
});
地图设置树视图(全景);
poly=新的google.maps.Polyline({
strokeColor:“#000000”,
笔划不透明度:1.0,
冲程重量:3
});
poly.setMap(map);
//为单击事件添加侦听器
map.addListener('position\u change',addLatLng);
}
//处理地图上的单击事件,并向多段线添加新点。
功能添加(事件){
var path=poly.getPath();
//因为path是一个MVCArray,所以我们可以简单地附加一个新的坐标
//它会自动出现。
路径推送(event.latLng);
//A点
//现在硬编码为德克萨斯州立大学
var图像=”https://upload.wikimedia.org/wikipedia/commons/7/73/Farm-Fresh_star.png“;//星星
var pointA=新的google.maps.Marker({
职位:{lat:30.567989,lng:-97.655153},
地图:地图,
标题:“德克萨斯州”,
图标:图像,
动画:google.maps.animation.DROP
});
var contentString_A=‘德克萨斯州立大学圆岩分校’;
var infowindow_A=新的google.maps.infowindow({
内容:contentString_A
});
函数信息_A(){
信息窗口A.打开(地图、点A);
}
//B点
//现在硬编码为H-E-B
var pointB=新的google.maps.Marker({
位置:{lat:30.560619,lng:-97.688338},
地图:地图,
标题:"heb",,
图标:图像,
动画:google.maps.animation.DROP
});
var contentString_B='h-e-B';
var infowindow_B=新的google.maps.infowindow({
内容:contentString_B
});
函数信息_B(){
信息窗口打开(地图,点B);
}
pointA.addListener('click',info_A);
pointB.addListener('click',info_B);
函数toggleBounce(){
if(marker.getAnimation()!==null){
marker.setAnimation(null);
}否则{
setAnimation(google.maps.Animation.BOUNCE);
}
}
}
当触发panorama
“pano\u changed”事件时,需要调用addLatLng()
函数,新全景的位置为:
google.maps.event.addListener(panorama, 'pano_changed', function(){
addLatLng({latLng:panorama.getPosition()});
}):
代码片段:
var-poly;
var映射;
尖端变种;
var pointB;
函数initMap(){
var mapDiv=document.getElementById('map');
map=新的google.maps.map(mapDiv{
中心:{
拉脱维亚:30.565244,
液化天然气:-97.671010
},
缩放:14
});
变量txstate={
拉脱维亚:30.569858,
液化天然气:-97.655918
};
var panorama=新建google.maps.StreetViewPanorama(
document.getElementById('pano'){
位置:txstate,
pov:{
标题:34,
投球:10
}
});
google.maps.event.addListener(panorama,'pano_changed',function(){
addLatLng({
latLng:panorama.getPosition()
});
如果(!map.getBounds().contains(panorama.getPosition())){
map.setCenter(panorama.getPosition());
}
})
地图设置树视图(全景);
poly=新的google.maps.Polyline({
strokeColor:“#000000”,
笔划不透明度:1.0,
冲程重量:3
});
poly.setMap(map);
//为单击事件添加侦听器
map.addListener('position\u change',addLatLng);
}
//处理地图上的单击事件,并向多段线添加新点。
功能添加(事件){
var path=poly.getPath();
//因为path是一个MVCArray,所以我们可以简单地附加一个新的坐标
//它会自动出现。
路径推送(event.latLng);
//A点
//现在硬编码为德克萨斯州立大学
var图像=”https://upload.wikimedia.org/wikipedia/commons/7/73/Farm-Fresh_star.png“;//星星
如果(!pointA){
pointA=新的google.maps.Marker({
职位:{
拉脱维亚:30.567989,
液化天然气:-97.655153
},
地图:地图,
标题:“德克萨斯州”,
图标:图像,
动画:google.maps.animation.DROP
});
var contentString_A=‘德克萨斯州立大学圆岩分校’;
var infowindow_A=新的google.maps.infowindow({
内容:contentString_A
});
pointA.addListener('click',info_A);
}
函数信息_A(){
信息窗口A.打开(地图、点A);
}
//B点
//现在硬编码为H-E-B
如果(!点B){
var pointB=新的google.maps.Marker({
职位:{
拉脱维亚:30.560619,
液化天然气:-97.688338
},