2010-08-31 13 views
7

Zastanawiasz się, czy istnieje standardowa/domyślna nakładka/marker, którego mogę używać w MAPVIEW?Domyślny znacznik dla google google MAPVIEW?

Szukałem w Internecie, a wszystkie samouczki mówią o rozszerzeniu nakładki i umieszczeniu na niej niestandardowego obrazu.

Czy jest łatwiejszy sposób? Chcę tylko mieć znacznik, nic nadzwyczajnego.

Pozdrowienia

James

Odpowiedz

2

Jeśli używasz Eclipse jako IDE, można dodać .png, na przykład, do/odkształcalne-hdpi,/rozciągliwej-ldpi,/odkształcalne-MDPI katalogi . Następnie można umieścić i otrzymać listę odnośników do nakładek trochę tak:

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

    } 
} 

mam większość tego kodu z samouczka już nie mogę znaleźć link. Nakładki są łatwe do manipulowania. Mam nadzieję że to pomoże.

+0

Witam, dziękuję za Twoją sugestię, ale szukam, jeśli jest domyślny znacznik do użycia, podobny do GMarkera w Google js API. –

+2

Ah, rozumiem. Moja sugestia to uratowanie sobie problemu i skopiowanie znacznika bezpośrednio z obrazów Google. Wynik końcowy jest taki sam. Również, "Domyślnie używają G_DEFAULT_ICON, ale można określić niestandardową ikonę.Kodarka GMarker przyjmuje jako argumenty GLatLng i opcjonalne obiekty GMarkerOptions." z http://code.google.com/apis/maps/documentation/javascript/v2/overlays.html – Alex

0

Jeśli używasz Google Maps Android API v2, możesz użyć następującej metody.

Powiązane problemy