2010-06-27 5 views
5

MapActivity가 있습니다. 트래픽을보기 위해 적절한 위치와 확대/축소 수준으로 설정되어있는 경우 교통 정보가 표시되는 지점에서지도와 상호 작용할 때까지 아무 것도 표시되지 않습니다 (클릭, 드래그 등). 당연히 나는 트래픽이로드 된 후에도 사용자 상호 작용없이 트래픽이 나타나기를 원합니다. 그러나 트래픽을 트리거하는 방법을 파악할 수 없었습니다. 어떤 아이디어?Android 1.6 MapView는 사용자가지도와 상호 작용할 때까지 트래픽을 표시하지 않습니다.

내 MapActivity 상속 클래스에서

: 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> 

답변

3

postInvalidate()를 호출하십시오 사용 후 다시 그려되지 않는 것입니다, 지연 시간의 어떤 종류의 당신은 시도?

+0

당신의 제안에 나는 이것을 또 한번 시도했다. mapView.postInvalidateDelayed (5000)를 배치했습니다. 이 액티비티에 대해 OnStart()를 실행하고 디버그 모드에서 적중을 확인한 다음 앉아서 30 초 동안 트래픽이 표시 될 때까지 기다렸습니다. 아무런 효과가없는 것처럼 보였습니다. – Brian

+0

사실 당신은 맞습니다. 지도가 완전히 렌더링 된 후 지연이 시작되면 지연이 실제로 작동 한 후 postInvalidate. 첫 번째 렌더링이 완료되기 전에 실행되면 아무 일도 일어나지 않습니다. cheezy 테스트 수정 postInvalidateDelayed가 (아마도 UI 스레드에서 해고했기 때문에) postInvalidateDelayed가 작동하지 않는 것 같아서 onCreate에서 작동 했나요? 어쨌든지도가 <1000ms에서 렌더링되는 경우 작동합니다. 타이머 타이머 = 새로운 타이머(); timer.schedule (new TimerTask() { @Override public void run() {mapView.postInvalidate();} }, 1000); – Brian

0

에서 나는 MapViewXML attrs을 찾기 위해 시도했지만 내가 그들을 찾을 수 없습니다 뭐죠 여기

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); 
} 

을 그리고이다.

내 생각 엔지도가 setTraffic(true);

이 해결 방법으로해야 할 적절한 지연 후 mapView.invalidate();

+0

슬프게도 이미 mapView.invalidate()를 시도했습니다. 및 지연 시간 mapView.postInvalidate()하지만 어떤 효과가없는 것 같습니다. – Brian

0

나는 이것에 관한 버그 리포트를 제출했다. 숫자는 10317이다. 조사에서 MapView에서 트래픽이나 스트리트 뷰 모드를 켜면 스레드가 시작되어 Google 서버에서 데이터를 검색합니다. MapView가 그려지는 시점까지 데이터가 반환되지 않으면 해당 줄이 표시되지 않습니다. 사용자 상호 작용으로 인해 다시 그리기가 발생하고 데이터가 일반적으로 표시됩니다. 코드 실행이 끝날 때까지 (즉 모드를 설정 한 코드) 스레드가 시작되지 않으므로 무효 호출이 작동하지 않습니다. 해결 방법은 미래의 메시지를 게시하여 MapView를 무효화하여 데이터가 존재할 때 다시 그리기를 발생시키는 것입니다. 데이터가 검색 될 때 다시 그리기가 발생하도록 데이터를 가져 오는 스레드에 대한 수정 프로그램이 있습니다.

관련 문제