android – 如何在折线路径上设置谷歌地图v2标记的动画?

android – 如何在折线路径上设置谷歌地图v2标记的动画?,第1张

概述我已经使用谷歌地图V2构建了一个应用程序,并在地图上放置了2个标记.第一个标记是获取用户当前位置,第二个标记是用户目标位置.然后我添加decodePoly方法来绘制这些标记之间的界限.我还添加了一个方法,使用警告对话框为用户提供有关持续时间,起始地址和目标地址的信息. 因此,当我单击第二个标记时,我想要将该标记设置为“移动”到第一个标记.但我的问题是,第二个标记没有在折线路径上移动.你可以在下面的 我已经使用谷歌地图V2构建了一个应用程序,并在地图上放置了2个标记.第一个标记是获取用户当前位置,第二个标记是用户目标位置.然后我添加decodepoly方法来绘制这些标记之间的界限.我还添加了一个方法,使用警告对话框为用户提供有关持续时间,起始地址和目标地址的信息.

因此,当我单击第二个标记时,我想要将该标记设置为“移动”到第一个标记.但我的问题是,第二个标记没有在折线路径上移动.你可以在下面的图片看到:

这是MapActivity.java:

@OverrIDepublic boolean onMarkerClick(Marker arg0) { // if user click the first marker     if(this.lokasi_asli.equals(arg0)){        AlertDialog.Builder alert = new AlertDialog.Builder(MapActivity.this);        alert.setTitle("First position")            .setIcon(R.drawable.ic_launcher)            .setCancelable(true)            .setMessage("First position : " + "\n" + loc_a)            .setPositivebutton("Yes",new DialogInterface.OnClickListener() {                @OverrIDe                public voID onClick(DialogInterface dialog,int which) {                    dialog.dismiss();                }            })            .setNegativebutton("No",int which) {                    dialog.dismiss();                }            });        alert.show();    } else if (this.lokasi_tujuan.equals(arg0)) { //if user click second marker        final boolean hIDeMarker = false;        final Handler handler = new Handler();        final long start = SystemClock.uptimeMillis();        Projection proj = gmap.getProjection();        Point startPoint = proj.toScreenLocation(lokasi_tujuan.getposition());        final LatLng startLatLng = proj.fromScreenLocation(startPoint);        final long duration = 5000;        final Interpolator interpolator = new linearInterpolator();        handler.post(new Runnable() {            @OverrIDe            public voID run() {                long elapsed = SystemClock.uptimeMillis() - start;                float t = interpolator.getInterpolation((float) elapsed / duration);                double longID = t * lokasi_asli.getposition().longitude + (1-t) * startLatLng.longitude;                double latID = t * lokasi_asli.getposition().latitude + (1-t) * startLatLng.latitude;                lokasi_tujuan.setposition(new LatLng(latID,longID));                if(t < 1.0){                    //                    handler.postDelayed(this,16);                } else {                    if(hIDeMarker){                        lokasi_tujuan.setVisible(false);                    } else {                        lokasi_tujuan.setVisible(true);                    }                }            }        });

从谷歌地图获取数据:

@OverrIDe    protected voID onPostExecute(VoID result){        super.onPostExecute(result);        if(doc != null){            NodeList _nodeList = doc.getElementsByTagname("status");            Node node1 = _nodeList.item(0);            String _status1 = node1.getChildNodes().item(0).getNodeValue();            if(_status1.equalsIgnoreCase("OK"))            {                NodeList _nodeList_path = doc.getElementsByTagname("overvIEw_polyline");                Node node_path = _nodeList_path.item(0);                Element _status_path = (Element)node_path;                NodeList _nodeList_destination_path = _status_path.getElementsByTagname("points");                Node _nodeList_dest = _nodeList_destination_path.item(0);                String _path = _nodeList_dest.getChildNodes().item(0).getNodeValue();                List<LatLng> directionPoint = decodepoly(_path);                polylineoptions rectline = new polylineoptions().wIDth(10).color(color.RED).geodesic(true);                for (int i = 0; i < directionPoint.size(); i++)                 {                    rectline.add(directionPoint.get(i));                }                gmap.addpolyline(rectline);                mark_opt.position(new LatLng(dest_lat,dest_long));                mark_opt.draggable(true);                mark_opt.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));                lokasi_tujuan = gmap.addMarker(mark_opt);            } else {                Toast.makeText(MapActivity.this,"Maaf,TIDak dapat menemukan rute tujuan\nCoba pilih rute lain yang mendekati",Toast.LENGTH_LONG).show();            }            progres_dlg.dismiss();            }        }    }

如何让第二个标记在折线路径上移动?
任何想法或帮助将不胜感激.
环境:windows 7,Eclipse,Genymotion.

解决方法 查看教程,其中显示了如何在地图路线上设置标记动画.它还提供了GitHub中的代码,您可以尝试使用它.

Check HERE

希望这会指导你.

总结

以上是内存溢出为你收集整理的android – 如何在折线路径上设置谷歌地图v2标记的动画?全部内容,希望文章能够帮你解决android – 如何在折线路径上设置谷歌地图v2标记的动画?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1130390.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存