Android 如何将路线上的对象从起点移动到终点
请告诉我,我是否使用了当时看到的许多答案的当前位置。但我的位置来源于服务,这是主要问题。服务后,我会得到所有的起点和终点。现在,如何设置从起点到终点的动画?我已经完成了0索引到1索引的动画移动,但其余的我没有。现在我需要帮助来解决这个问题。 我有一个位置,我从我的服务,我在谷歌地图创建路线图。但现在我想显示一个移动的标记或车辆,并通过起点到终点设置动画 如何从起点到终点实现动画?这是 我的方法和我用一个 多段线Android 如何将路线上的对象从起点移动到终点,android,google-maps,Android,Google Maps,请告诉我,我是否使用了当时看到的许多答案的当前位置。但我的位置来源于服务,这是主要问题。服务后,我会得到所有的起点和终点。现在,如何设置从起点到终点的动画?我已经完成了0索引到1索引的动画移动,但其余的我没有。现在我需要帮助来解决这个问题。 我有一个位置,我从我的服务,我在谷歌地图创建路线图。但现在我想显示一个移动的标记或车辆,并通过起点到终点设置动画 如何从起点到终点实现动画?这是 我的方法和我用一个 多段线 private void setMapMarker(谷歌地图谷歌地图){ goog
private void setMapMarker(谷歌地图谷歌地图){
googleMap.clear();
初始化(Objects.requirennull(getActivity()).getApplicationContext());
api=ApiClient.getClient().create(apinterface.class);
LocationInfo LocationInfo=新的LocationInfo();
locationInfo.setMOV_DATE(fromDate.getText().toString());
locationInfo.SetEmployee_ID(员工ID);
locationInfo.setSTART_TIME(fromTime.getText().toString());
locationInfo.setEND_TIME(toTime.getText().toString());
Call listCall=api.getLocation(locationInfo);
APIHelper.enqueueWithRetry(listCall,new Callback(){
@凌驾
公共void onResponse(调用、响应){
试一试{
if(response.issusccessful()){
List=response.body();
Map Map=getEmployeeList(列表);
if(list==null | | list.isEmpty()| | list.equals(0)){
googleMap.clear();
Toast.makeText(getActivity(),“找不到数据”,Toast.LENGTH_SHORT.show();
}否则{
对于(Map.Entry:Map.entrySet()){
字符串employee=entry.getKey();
List list1=map.get(员工);
如果(list1.size()>0){
List latlng=new ArrayList();
对于(int i=0;i
已经显示了路线图。首先,我想说的是,您的问题应该更清楚 重要的是要知道您是否希望在车辆行驶时设置标记。我将假设这是您想要做的,我将根据这一点提供答案
您已经有了设置标记的方法->
setMapMarker
您现在需要做的就是每隔一秒左右调用此方法。您可以使用线程来完成此操作,如下所示:
//Declare Thread
Thread thread;
void startSetMarker() {
thread = new Thread() {
@Override
public void run() {
try {
while (!thread.isInterrupted()) {
Thread.sleep(1000);
runOnUiThread(new Runnable() {
@Override
public void run() {
//Call setMapMarker here
}
});
}
} catch (InterruptedException e) {
}
}
};
thread.start();
}
//You can cancel the thread like this:
void cancelThread(){
thread.interrupt();
}
这样,标记将每秒更新一次
当您想要开始设置标记时,您可以调用
startMarker();
当用户到达最终目标时,您可以通过调用cancelThread()取消线程
我假设您想在车辆移动时移动标记?要做到这一点,您必须每秒左右获取一次lat/long,然后相应地更新标记。如果您想在车辆不移动的情况下为其设置动画,您需要获取起点和终点之间的lat/long位置,并将标记移动到该点。我已经获得了route和marker。但是我想在我的路线上显示一些动画。我更新的代码再次看到。谢谢你想在汽车行驶时显示动画吗?我有起点和终点。我还指示路线。但是我想显示一些东西,这些东西从起点到终点,就像汽车移动一样。看看我的第一条评论。非常感谢。首先,我很感谢你的回答。但是当我的服务时间很长的时候,我该怎么办呢?
//Declare Thread
Thread thread;
void startSetMarker() {
thread = new Thread() {
@Override
public void run() {
try {
while (!thread.isInterrupted()) {
Thread.sleep(1000);
runOnUiThread(new Runnable() {
@Override
public void run() {
//Call setMapMarker here
}
});
}
} catch (InterruptedException e) {
}
}
};
thread.start();
}
//You can cancel the thread like this:
void cancelThread(){
thread.interrupt();
}