5

我有一个 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>
4

3 回答 3

3

适当延迟后的 postInvalidate() 应该作为一种解决方法,您尝试过什么样的延迟时间?

于 2010-07-02T19:26:09.617 回答
0

我试图找到的XML attrsMapView但我找不到他们。

我的猜测是地图在使用后没有重绘setTraffic(true);

试着打电话mapView.invalidate();

于 2010-06-27T05:23:11.220 回答
0

我为此提交了一份错误报告,编号为10317。根据我的研究,当您在 MapView 上打开交通或街景模式时,会启动一个线程以从 Google 服务器检索数据。如果在 MapView 自行绘制时数据未返回,则不会显示相应的行。用户交互会导致重绘,然后通常会出现数据。调用 invalidate 不起作用,因为线程在您的代码完成执行(即,设置模式的代码)之前不会启动。解决方法是发布未来消息以使 MapView 无效,然后在(希望)数据存在时导致重绘。修复将针对执行数据提取的线程,以在检索数据时导致重绘。

于 2010-11-01T02:52:05.367 回答