2016-04-27 5 views
0

Ich mache locaton basierte Erinnerung app und ich möchte wissen, dass, wie Marker zu aktuellen location..i hinzuzufügen am folgenden Code verwenden, und ich möchte, ist es ein Code-Kartenansicht zu vergrößern ..Wie kann man einen Marker zum aktuellen Standort in Google Maps v2 hinzufügen?

public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 
    mMap.setMapType(googleMap.MAP_TYPE_NORMAL); 
    LatLng sydney = new LatLng(-34, 151); 
    mMap.addMarker(new MarkerOptions().position(sydney).title("Sydney")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 10f)); 

    //Add a marker in Sydney, Australia, and move the camera. 

    mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 
     @Override 
     public void onMapClick(LatLng latLng) { 
      mMap.clear(); 
      locationLat = latLng.latitude; 
      locationLong = latLng.longitude; 

      AddLocationActivity.this.addMarker(new LatLng(locationLat,locationLong), AddLocationActivity.locationName); 

      mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(locationLat,locationLong), 10.9f)); 
      AddLocationActivity.this.mainClass.locationName = address; 
      Log.i("AddLocationActivity",""+AddLocationActivity.this.mainClass.locationName); 

     } 
    }); 

} 
+0

Werfen Sie einen Blick auf ihre Dokumentation: https://developers.google.com/maps/documentation/android- api/Markierung. – chRyNaN

Antwort

1

ändern Sie den Code nach folgenden:

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 
    @Override 
    public void onMapClick(LatLng latLng) { 
     mMap.clear(); 
     Marker marker = mMap.addMarker(new MarkerOptions().position(latLng).title("Title")); 
     marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)); 

     mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10.9f)); 
    } 
}); 
+0

Bitte überprüfen Sie meinen Bearbeitungscode .. wo ich diesen Code –

+0

Ersetzen Sie Ihren Code-Teil für setOnMapClickListener() unterhalb der Cooment-Linie mit diesen Code. –

1

Versuchen Sie stattdessen

LatLng markerLocation = new LatLng(latitude,longitude); // latitude and longitude must be a float or double 
Marker marker = mMap.addMarker(new MarkerOptions() 
        .position(markerLocation)); // any title you want 

für die Kartenansicht Zoomen, gibt es eine Standardfunktion bereits. Handgesten verwenden, wenn Sie einen Boden hinzufügen möchten, können Sie die Zoomfunktion

Hier ist der gesamte Code

public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 
    mMap.setMapType(googleMap.MAP_TYPE_NORMAL); 
    LatLng sydney = new LatLng(-34, 151); 
    mMap.addMarker(new MarkerOptions().position(sydney).title("Sydney")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 10f)); 

    //Add a marker in Sydney, Australia, and move the camera. 

    mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 
     @Override 
     public void onMapClick(LatLng latLng) { 
      mMap.clear(); 

      mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10f)); 
      Marker marker = mMap.addMarker(new MarkerOptions().position(latLng)); 

     } 
    }); 
} 
+0

ich dnt bekommen Sie ,,, bitte sagen Sie mir, welche Zeile ich für diesen Code ersetzen sollte ,,, –

+0

@AhadMurtaza aktualisiert meinen Code –

0

Als erstes müssen Sie bekommen die aktuelle Position durch einen onlicationchangelistener in Google Maps hinzufügen. Hier ist der Listener im Code.

Platzieren Sie dann Marker entsprechend dem Ort, den Sie haben.

Unten ist der Code Teil

private GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() { 
@Override 
public void onMyLocationChange(Location location) { 
    LatLng loc = new LatLng(location.getLatitude(), location.getLongitude()); 
    if(mMarker == null){ 
     mMarker = mMap.addMarker(new MarkerOptions().position(loc)); 
    }else{ 
     mMarker.remove(); 
     mMarker = mMap.addMarker(new MarkerOptions().position(loc)); 
    } 
     mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 16.0f)); 
} 
}; 

den Hörer, Karten hinzuzufügen.

Dies wird Marker in die aktuelle Schicht setzen.

+0

es ist veraltete Methode – Erum

1

Versuchen Sie, diese Art und Weise dies für mich gearbeitet

public class MainActivity extends Activity implements LocationListener { 
GoogleMap map; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

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

    lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 

    map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) 
    .getMap(); 

} 

@Override 
public void onLocationChanged(Location location) { 

    map.clear(); 

    MarkerOptions mp = new MarkerOptions(); 

    mp.position(new LatLng(location.getLatitude(), location.getLongitude())); 

    mp.title("my position"); 

    map.addMarker(mp); 

    map.animateCamera(CameraUpdateFactory.newLatLngZoom(
    new LatLng(location.getLatitude(), location.getLongitude()), 16)); 

} 

@Override 
public void onProviderDisabled(String provider) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onProviderEnabled(String provider) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
    // TODO Auto-generated method stub 

} 

} 

OUTPUT

Verwandte Themen