vis*_*dra -1 android android-maps android-mapview
请指导我如何在地图上做动画标记/图钉/叠加图标.我从最近2天尝试了很多,但我没有成功.
提前致谢..
不工作
RES /抽拉/ map_marker.xml
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/ecall_lowon" android:duration="200" />
<item android:drawable="@drawable/ecall_mediumoff" android:duration="200" />
Run Code Online (Sandbox Code Playgroud)
Java代码
Drawable drawable = this.getResources().getDrawable(R.drawable.map_marker);
MapItemizedOverlay mapItemizedOverlay = new MapItemizedOverlay(drawable, this);
GeoPoint geoPoint1 = new GeoPoint((int)(9.982878 * 1E6), (int)(76.285774 * 1E6));
GeoPoint geoPoint2 = new GeoPoint((int)(9.973928 * 1E6), (int)(76.276824 * 1E6));
OverlayItem overlayItem1 = new OverlayItem(geoPoint1, "Title1", "");
OverlayItem overlayItem2 = new OverlayItem(geoPoint2, "Title2", "");
mapItemizedOverlay.addOverlayItems(overlayItem1);
mapItemizedOverlay.addOverlayItems(overlayItem2);
mapView.getOverlays().add(mapItemizedOverlay);
Run Code Online (Sandbox Code Playgroud)
但没有成功......
以XML格式定义的按顺序(<animation-list />)显示图像序列的动画可能无法在地图上显示闪烁引脚
我已经解决了这个问题并找到了解决方案之一
点子:两个可绘制...,Runnable和handler,SetPin_On()和SetPin_Off() ,在SetPin_On方法使用一个图像和SetPin_Off方法使用另一个图像,每个函数调用清除覆盖,然后再添加
资源:拿两张图片说pin_on,pin_off
编码:需要带有处理程序的Runnable来按间隔设置引脚
例:
Handler handler=new Handler();
int check=0;
Runnable r=new Runnable()
{
@Override
public void run()
{
if(check==0)
{
SetPin_On();
check=1;
}
else if(check==1)
{
SetPin_Off();
check=0;
}
handler.postDelayed(this, 500);
}
};
Run Code Online (Sandbox Code Playgroud)
在SetPin_On方法中,在叠加上设置pin_on图像,在SetPin_Off方法中再次通过清除前一个叠加设置pin_off图像
SetPin_On:
void SetPin_On()
{
mapOverlays = mapView.getOverlays();
mapOverlays.clear();
res =getResources();
drawable = res.getDrawable(R.drawable.pin_on);
itemizedOverlay = new CustomItemizedOverlay(drawable,this, mapView);
point = new GeoPoint((int)(Double.parseDouble(lati)*1E6),(int)(Double.parseDouble(longi)*1E6));
overlayitem = new OverlayItem(point, "Hello", "I'm in Athens, Greece!");
itemizedOverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedOverlay);
mapController = mapView.getController();
mapController.animateTo(point);
mapController.setZoom(6);
}
Run Code Online (Sandbox Code Playgroud)
SetPin_Off:
void SetPin_Off()
{
mapOverlays = mapView.getOverlays();
mapOverlays.clear();
res =getResources();
drawable = res.getDrawable(R.drawable.pin_off);
itemizedOverlay = new CustomItemizedOverlay(drawable,this, mapView);
point = new GeoPoint((int)(Double.parseDouble(lati)*1E6),(int)(Double.parseDouble(longi)*1E6));
overlayitem = new OverlayItem(point, "Hello", "I'm in Athens, Greece!");
itemizedOverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedOverlay);
mapController = mapView.getController();
mapController.animateTo(point);
mapController.setZoom(6);
}
Run Code Online (Sandbox Code Playgroud)
这是获得闪烁引脚的一种解决方案.虽然效率不高但结果非常准确
请参阅此处了解其他解决方
| 归档时间: |
|
| 查看次数: |
2689 次 |
| 最近记录: |