Javascript 如何在谷歌地图上获取移动对象的Lat长度?
我正在谷歌地图上工作,在我的地图上,我用一篇文章构建了一个移动的对象 我的问题是,我想得到移动对象(动画符号)的位置 就像一个符号在a点到B点之间移动,所以我想知道每个时间点的位置Javascript 如何在谷歌地图上获取移动对象的Lat长度?,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我正在谷歌地图上工作,在我的地图上,我用一篇文章构建了一个移动的对象 我的问题是,我想得到移动对象(动画符号)的位置 就像一个符号在a点到B点之间移动,所以我想知道每个时间点的位置 function animateCircle() { var count = 0; window.setInterval(function() { count = (count + 1) % 200; var icons = line.get('icons');
function animateCircle() {
var count = 0;
window.setInterval(function() {
count = (count + 1) % 200;
var icons = line.get('icons');
icons[0].offset = (count / 2) + '%';
line.set('icons', icons);
GetLatLongAtThisPosition(); // i wants to get the current location of here each time
}, 20);
}
不幸的是,我不认为你能用谷歌地图API获得很长的符号路径 如果您
console.log
icons[0]您将看到icon
对象
只有路径、缩放和笔划颜色:
console.log(icons[0].icon)
{
path: 0,
scale: 8,
strokeColor: "#393"
}
符号没有位置,但您可以计算它:
var position = google.maps.geometry.spherical.interpolate(lineCoordinates[0], lineCoordinates[1], (count / 200));
代码段:
//此示例将动画符号添加到多段线。
var线;
var标记;
线坐标;
var映射;
函数初始化(){
变量映射选项={
中心:新google.maps.LatLng(20.291153.027),
缩放:6,
mapTypeId:google.maps.mapTypeId.TERRAIN
};
map=new google.maps.map(document.getElementById('map-canvas'),
地图选项);
线坐标=[
新的google.maps.LatLng(22.291153.027),
新google.maps.LatLng(18.291153.027)
];
//使用预定义路径之一(“圆”)定义符号
//由谷歌地图JavaScript API提供。
变量lineSymbol={
路径:google.maps.SymbolPath.CIRCLE,
比例:8,
strokeColor:“#393”
};
//创建多段线并通过“icons”属性向其添加符号。
line=新的google.maps.Polyline({
路径:线坐标,
图标:[{
图标:lineSymbol,
抵销:“100%”
}],
地图:地图
});
动画循环();
}
//使用DOM setInterval()函数更改符号的偏移量
//以固定的间隔。
函数animateCircle(){
var infowindow=new google.maps.infowindow();
var计数=0;
setInterval(函数(){
计数=(计数+1)%200;
var icons=line.get('icons');
图标[0]。偏移量=(计数/2)+'%';
行。设置('图标',图标);
var position=google.maps.geometry.spherical.interpolate(线坐标[0],线坐标[1],(计数/200));
如果(!标记){
marker=新的google.maps.marker({
职位:职位,,
地图:地图
});
setContent(marker.getPosition().toUrlValue(6));
信息窗口。打开(地图、标记);
}否则{
标记器。设置位置(位置);
}
setContent(marker.getPosition().toUrlValue(6));
}, 20);
}
google.maps.event.addDomListener(窗口“加载”,初始化)代码>
html,
身体
#地图画布{
高度:500px;
宽度:500px;
边际:0px;
填充:0px
}
为什么有人投票关闭这个问题,因为“这个问题似乎与编程无关”?对我来说似乎很有意思me@duncan,不是我,但标记为:寻求调试帮助的问题(“为什么此代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。参见:如何创建一个最小的、完整的、可验证的示例我猜投票者想要一把小提琴或一些MCV示例用户不是要求调试帮助或演示损坏的代码,他们想知道如何实现一些新功能。最初的问题是关于两个顶点的直线上的一个点。这将是另一个问题。或者,您也可以查看有关沿多段线设置标记动画的类似问题(如以下问题:。
function animateCircle() {
var infowindow = new google.maps.InfoWindow();
var count = 0;
window.setInterval(function () {
count = (count + 1) % 200;
var icons = line.get('icons');
icons[0].offset = (count / 2) + '%';
line.set('icons', icons);
var position = google.maps.geometry.spherical.interpolate(lineCoordinates[0], lineCoordinates[1], (count / 200));
if (!marker) {
marker = new google.maps.Marker({
position: position,
map: map
});
infowindow.setContent(marker.getPosition().toUrlValue(6));
infowindow.open(map,marker);
} else {
marker.setPosition(position);
}
infowindow.setContent(marker.getPosition().toUrlValue(6));
}, 20);
}