2011-06-20 60 views
0

我有緯度經度。我想顯示在Google map項目列表.. 那麼,如何建立覆蓋列表以及如何顯示在谷歌地圖覆蓋項目列表?如何在Android的地圖上顯示多個覆蓋圖?

+0

查看本教程http://mobile.tutsplus.com/tutorials/android/android-sdk-build-a-mall-finder-app-mapview-location/ – Aamirkhan

+0

請[follow this](http:// android -code-examples.blogspot.com/2011/04/google-map-example-in-android-with-info.html)。它使用多重覆蓋實現谷歌地圖的非常簡單的例子。 –

回答

2

這是我做我的項目...

package org.nip.gmap; 

import java.util.List; 

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; 
import android.graphics.drawable.Drawable; 
import android.os.Bundle; 

public class Main extends MapActivity { 


    /** Called when the activity is first created. */ 

    MapView map; 
    MapController controller; 
    List<Overlay> overlayList; 
    int lat=0; 
    int lng=0; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     map = (MapView) findViewById(R.id.mapView); 
     map.setBuiltInZoomControls(true); 

     overlayList = map.getOverlays(); 
     Drawable drawable = this.getResources().getDrawable(R.drawable.pushpin2); 
     CustomPinpoint itemizedoverlay = new CustomPinpoint(drawable,this); 


     double lat_coordinates[] ={27.700556,28.2642635,30.0018168,29.776669,29.4096819,29.4560611}; 
     double lng_coordinates[] ={85.3630,83.9735195,80.7382742,81.2518833,81.8115051,80.5403779}; 
     String place_name[] ={"kathmandu","Pokhara","Darchula","Bajhang","Bajura","Baitadi"}; 
     String place_info[] ={"Its an capital of Nepal","Its and tourist place of Nepal","Its one of the beautiful place in country side","CHD District Target:10 51,960, VDCs/Muncipalities reported:41/41","CHD District Target: 71,280, VDCs/Muncipalities reported: 47/47","CHD District Target:10 51,960, VDCs/Muncipalities reported:41/41","CHD District Target: 71,280, VDCs/Muncipalities reported: 7/7","CHD District Target:10 21,960, VDCs/Muncipalities reported:44/41","CHD District Target: 33,3123, VDCs/Muncipalities reported: 47/47"}; 

     try{ 
      for(int i=0; i<place_name.length; i++) 
      { 
       GeoPoint point = new GeoPoint((int)(lat_coordinates[i]*1E6),(int)(lng_coordinates[i]*1E6)); 
       OverlayItem overlayitem = new OverlayItem(point, place_name[i], place_info[i]); 
       itemizedoverlay.addOverlay(overlayitem); 
      } 
     }catch(NullPointerException e){ 
      e.getStackTrace(); 

     } 
     finally{ 
      overlayList.add(itemizedoverlay); 
     } 

     controller = map.getController(); 
     controller.animateTo(new GeoPoint((int)(lat_coordinates[0]*1E6),(int)(lng_coordinates[0]*1E6))); 
     controller.setZoom(8); 


    } 

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

} 

創建新類...

package org.nip.gmap; 

import java.util.ArrayList; 

import android.app.AlertDialog; 
import android.content.Context; 
import android.graphics.drawable.Drawable; 

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

public class CustomPinpoint extends ItemizedOverlay<OverlayItem> { 

    private ArrayList<OverlayItem> pinpoints = new ArrayList<OverlayItem>(); 
    private Context c; 


    public CustomPinpoint(Drawable defaultMarker, Context context) { 
     super(boundCenter(defaultMarker)); 
     c= context; 

    } 

// public CustomPinpoint(Drawable M, Context context) { 
//  
//  this(M); 
//  c= context; 
// } 

    public void addOverlay (OverlayItem overlay) 
    { 
     pinpoints.add(overlay); 

     populate(); 
    } 

    @Override 
    protected OverlayItem createItem(int i) { 
     // TODO Auto-generated method stub 
     return pinpoints.get(i); 
    } 

    @Override 
    public int size() { 

     // TODO Auto-generated method stub 
     return pinpoints.size(); 
    } 
    @Override 
    protected boolean onTap(int index) { 
     // TODO Auto-generated method stub 
     OverlayItem item = pinpoints.get(index); 
     AlertDialog.Builder dialog = new AlertDialog.Builder(c); 
     dialog.setTitle(item.getTitle()); 
     dialog.setMessage(item.getSnippet()); 
     dialog.show(); 
     return true; 

    } 


} 

OnClickListener for pushpin