Javascript 如何在谷歌地图上获取移动对象的Lat长度?

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');

我正在谷歌地图上工作,在我的地图上,我用一篇文章构建了一个移动的对象

我的问题是,我想得到移动对象(动画符号)的位置

就像一个符号在a点到B点之间移动,所以我想知道每个时间点的位置

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);
}