2012-06-12 2 views
0

내 인텐 테이션은 가이드 역할을하는 응용 프로그램을 만드는 것입니다. 내 첫 번째 단계는지도를 얻고 중요한 관심 장소를 거의 추가하지 않고 LBS 및 근접 알림을 사용하여 관심 장소를 알리고 그 장소와 관련된 내용을 서술합니다. 내 문제는 마커가지도 위에 표시되지 않는다는 것입니다. 나는 프로 안드로이드 3 서에 주어진 것을 따랐다. 코드는 다음과 같습니다.안드로이드지도 오버레이 마커가 표시되지 않음

package com.project1; 

import java.util.List; 

import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.util.Log; 

import com.google.android.maps.GeoPoint; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapController; 
import com.google.android.maps.MapView; 
import com.google.android.maps.Overlay; 
import com.google.android.maps.OverlayItem; 

public class Testmap24Activity extends MapActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Log.d("Check point 1","Check Point 1"); 
     MapView mv = (MapView)findViewById(R.id.mapview); 
     mv.setBuiltInZoomControls(true); 
     mv.displayZoomControls(true); 
     MapController mvc = mv.getController(); 
     //mv.setSatellite(true); 
     mv.setTraffic(true); 
     mvc.setZoom(15); 

     Drawable drawable = getResources().getDrawable(R.drawable.marker1); 
     drawable.setBounds(drawable.getIntrinsicWidth()/2, drawable.getIntrinsicHeight(), drawable.getIntrinsicWidth()/2, 0); 

     map24overlay m24 = new map24overlay(drawable); 
     mv.getOverlays().add(m24); 
     GeoPoint pt = m24.getCenterPt(); 
     int latSpan = m24.getLatSpanE6(); 
     int lonSpan = m24.getLonSpanE6(); 
     Log.v("Overlays", "Lat span is " + latSpan); 
     Log.v("Overlays", "Lon span is " + lonSpan); 
     mv.animate(); 

      } 

    @Override 
    protected boolean isRouteDisplayed() { 
     // TODO Auto-generated method stub 
     return false; 
    } 
} 

오버레이에 대한 코드는 다음과 같습니다.

package com.project1; 

import java.util.ArrayList; 
import java.util.Iterator; 

import android.graphics.Canvas; 
import android.graphics.drawable.Drawable; 
import android.util.Log; 

import com.google.android.maps.GeoPoint; 
import com.google.android.maps.ItemizedOverlay; 
import com.google.android.maps.MapView; 
import com.google.android.maps.OverlayItem; 

public class map24overlay extends ItemizedOverlay { 
    private ArrayList<OverlayItem> locations = new ArrayList<OverlayItem>(); 
    private GeoPoint center = null; 

    public map24overlay(Drawable drawable) { 
     // TODO Auto-generated constructor stub 
     super(drawable);    
     GeoPoint grtgr1 = new GeoPoint((int)13.044101 * 1000000, (int)80.232723 * 100000); 
     GeoPoint grtpp = new GeoPoint((int)13.044101 * 1000000, (int)80.232723 * 100000); 
     GeoPoint grtgr2 = new GeoPoint((int)13.044101 * 1000000, (int)80.232723 * 100000); 
     GeoPoint grtpt = new GeoPoint((int)13.044101 * 1000000, (int)80.232723 * 100000); 
     locations.add(new OverlayItem(grtgr1, "GRT Coats Road", "GRT Coats Road")); 
     locations.add(new OverlayItem(grtpp, "Panagal Park", "Panagal Park")); 
     locations.add(new OverlayItem(grtgr2, "GRT Usman Road", "GRT Usman Road")); 
     locations.add(new OverlayItem(grtpt, "Pothys", "Pothys")); 
     populate(); 
    } 

    public GeoPoint getCenterPt() { 
     if(center == null) { 
     int northEdge = -90000000; // i.e., -90E6 microdegrees 
     int southEdge = 90000000; 
     int eastEdge = -180000000; 
     int westEdge = 180000000; 
     Iterator<OverlayItem> iter = locations.iterator(); 
     while(iter.hasNext()) { 
     GeoPoint pt = iter.next().getPoint(); 
     if(pt.getLatitudeE6() > northEdge) 
     northEdge = pt.getLatitudeE6(); 
     Log.d("North Edge", " " + northEdge + " "); 
     if(pt.getLatitudeE6() < southEdge) 
     southEdge = pt.getLatitudeE6(); 
     Log.d("South Edge", " " + southEdge + " "); 
     if(pt.getLongitudeE6() > eastEdge) 
     eastEdge = pt.getLongitudeE6(); 
     Log.d("East Edge", " " + eastEdge + " "); 
     if(pt.getLongitudeE6() < westEdge) 
     westEdge = pt.getLongitudeE6(); 
     Log.d("West Edge", " " + westEdge + " "); 
     } 
     center = new GeoPoint((int)((northEdge +southEdge)/2), 
     (int)((westEdge + eastEdge)/2)); 
     } 
     return center; 
    } 

    @Override 
    public void draw(Canvas canvas, MapView mapView, boolean shadow) 
    { 
    // Hide the shadow by setting shadow to false 
    super.draw(canvas, mapView, shadow); 
    } 

    @Override 
    protected OverlayItem createItem(int arg0) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public int size() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

} 

위의 두 코드 만 표시 마커없이 위성보기와지도. 누군가 도와 드릴 수 있습니까?

+0

제 대답을 참조하십시오. –

답변

0

아래 링크 코드를 사용하면 도움이 될 것입니다.

Map Overlay Demo

관련 문제