我有一个MapActivity。如果将其设置为适当的位置和缩放级别以查看流量,则在首次创建之后不显示,直到您与地图交互(单击,拖动等),此时流量将显示。当然,我希望流量在加载后没有任何用户交互显示,但我一直无法弄清楚如何触发它。有什么想法吗?
从我的MapActivity继承类:
private MapView mapView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapView.setTraffic(true);
}
这里有R.layout.map
的内容<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainlayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.google.android.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="...MY API KEY HERE..."
/>
</RelativeLayout>
答案 0 :(得分:3)
postInvalidate()应该作为一种解决方法,你尝试过什么样的延迟时间?
答案 1 :(得分:0)
我试图找到XML attrs
的{{1}},但我找不到它们。
我的猜测是使用MapView
尝试拨打setTraffic(true);
答案 2 :(得分:0)
我提交了一份关于此问题的错误报告,编号10317。根据我的研究,当您在MapView上打开流量或街景模式时,线程会启动以从Google服务器检索数据。如果在MapView绘制自己时没有返回数据,则不会显示相应的行。用户交互会导致重绘,到那时数据通常会出现。调用invalidate不起作用,因为线程在代码完成执行之前不会启动(即,启用模式的代码)。解决方法是发布未来消息以使MapView无效,从而导致重绘,然后(希望)存在数据。修复将用于执行数据提取的线程,以便在检索数据时重绘。