2010-08-31 20 views
7

Mi chiedo solo se esiste un overlay/marker standard/predefinito che posso utilizzare in MAPVIEW?Indicatore di default per android google MAPVIEW?

Ho cercato sul Web e tutti i tutorial parlano dell'estensione dell'overlay e di un'immagine personalizzata.

C'è un modo più semplice? Voglio solo avere un pennarello, niente di speciale.

saluti

James

risposta

2

Se si utilizza Eclipse come IDE, è possibile aggiungere un .png, per esempio, al vostro/drawable-hdpi,/drawable-ldpi,/directory drawable-MDPI . È quindi possibile effettuare e ottenere un elenco di riferimenti alle tue sovrapposizioni un po 'come questo:

package com.practice.mapper; 

import java.util.ArrayList; 

import android.graphics.drawable.Drawable; 

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

public class Itemization extends ItemizedOverlay<OverlayItem> { 

    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); 

    public Itemization(Drawable defaultMarker) { 

     super(boundCenterBottom(defaultMarker)); 
     // super(defaultMarker); 

    } 

    @Override 
    protected OverlayItem createItem(int i) { 
     return mOverlays.get(i); 
    } 

    public void addOverlay(OverlayItem overlay) { 
     mOverlays.add(overlay); 
     populate(); 
    } 

    @Override 
    public int size() { 
     return mOverlays.size(); 
    } 

} 



package com.practice.mapper; 

import java.util.List; 

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

import android.content.Context; 
import android.graphics.drawable.Drawable; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.location.LocationProvider; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.ZoomControls; 

public class Mapper extends MapActivity implements LocationListener { 

    Location presentLocation; 
    ZoomControls z; 
    LinearLayout linearLayout; 
    MapView mapView; 
    List<Overlay> mapOverlays; 
    Drawable drawable; 
    Itemization itemizedOverlay; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

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

     mapOverlays = mapView.getOverlays(); 
     drawable = this.getResources().getDrawable(R.drawable.androidmarker); 
     itemizedOverlay = new Itemization(drawable); 

     GeoPoint point = new GeoPoint(19240000, -99120000); 
     OverlayItem overlayitem = new OverlayItem(point, "", ""); 
     itemizedOverlay.addOverlay(overlayitem); 

     GeoPoint point2 = new GeoPoint(35410000, 139460000); 
     OverlayItem overlayitem2 = new OverlayItem(point2, "", ""); 
     itemizedOverlay.addOverlay(overlayitem2); 

     mapOverlays.add(itemizedOverlay); 
    } 

    public void btnUpdateClicked(View v) { 

     LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 

     LocationProvider p = lm.getProvider(LocationManager.GPS_PROVIDER); 

     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 20000, 1, this); 

     List<String> enabledProv = lm.getProviders(true); 

     Location l1 = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
     Location l2 = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
     Location l3 = lm.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER); 

     Button b = new Button(this.getApplicationContext()); 
     b.setOnClickListener(new OnClickListener(){ 

      public void onClick(View v) { 

      }}); 

     lm.toString(); 
    } 

    @Override 
    protected boolean isRouteDisplayed() { 

     return false; 
    } 

    public void onLocationChanged(Location location) { 

     presentLocation = location; 
     Log.d("TEST", "New location received"); 
    } 

    public void onProviderDisabled(String provider) { 

    } 

    public void onProviderEnabled(String provider) { 

    } 

    public void onStatusChanged(String provider, int status, Bundle extras) { 

    } 
} 

ho avuto la maggior parte di questo codice da un tutorial non riesco più a trovare il link di collegamento. Le sovrapposizioni sono piuttosto semplici da manipolare. Spero che questo ti aiuti.

+0

Ciao, grazie per il tuo suggerimento, ma quello che sto cercando è se c'è un marcatore di default da usare, simile a GMarker in google map js API. –

+2

Ah, capisco. Il mio suggerimento quindi è di risparmiarti il ​​problema e copiare l'indicatore direttamente dalle immagini di Google. Il risultato finale è lo stesso. "Per impostazione predefinita, utilizzano G_DEFAULT_ICON, anche se è possibile specificare un'icona personalizzata.Il GMarker costruttore accetta come argomenti argomenti GLatLng e GMarkerOptions." da http://code.google.com/apis/maps/documentation/javascript/v2/overlays.html – Alex

0

Se si utilizza l'API di Google Maps per Android v2, è possibile utilizzare il seguente metodo.

mapView.getMap().addMarker(new MarkerOptions() 
           .position(new LatLng(10, 10)) 
           .title("Hello world")); 
Problemi correlati