2010-08-31 13 views
7

MAPVIEW'ta kullanabileceğim standart/varsayılan yer paylaşımı/işaretleyici olup olmadığını mı merak ediyorsunuz?Varsayılan marker android için google MAPVIEW?

Web'de arama yaptım ve tüm öğreticiler Yer Paylaşımını genişletme ve özel resmin üzerine koyma hakkında konuşur.

Daha kolay bir yolu var mı? Sadece bir işaretçiye sahip olmak istiyorum, hiçbir şey fantezi değil.

Selamlar

James

cevap

2

Eğer IDE olarak Eclipse kullanıyorsanız, örneğin, senin/çekilebilir-hdpi,/çekilebilir-LDPI için, bir .png ekleyebilir,/çekilebilir-mdpi dizinleri . Daha sonra, bu gibi biraz da bindirmeleri için referans listesi yerleştirip edinebilirsiniz:

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) { 

    } 
} 

ben artık link bulabilirsiniz bir öğretici bu kodun en aldık. Bindirmelerin manipüle edilmesi oldukça kolaydır. Bu yardımcı olur umarım.

+0

Selam Öneriniz, ama ne aradığım google haritanın js API GMarker benzer kullanılacak varsayılan işaretleyici, varsa olduğunu için teşekkürler. –

+2

Ah, anlıyorum. Benim önerim o zaman kendinize sorundan kurtarıyor ve işaretçiyi doğrudan Google resimlerinden kopyalamanız gerekiyor. Son sonuç aynıdır. Ayrıca , "Varsayılan olarak özel bir simge belirtmek olsa, bunlar kullanım G_DEFAULT_ICON kullanın. GMarker yapıcı bir GLatLng ve argümanlar olarak isteğe bağlı GMarkerOptions nesneleri alır." Http://code.google.com/apis/maps/documentation/javascript/v2/overlays.html adresinden – Alex

0

Google Maps Android API v2 kullanıyorsanız, aşağıdaki yöntemi kullanabilirsiniz.

mapView.getMap().addMarker(new MarkerOptions() 
           .position(new LatLng(10, 10)) 
           .title("Hello world")); 
İlgili konular