2016-04-27 87 views
0

我正在基於locaton提醒應用程序,我想知道如何添加標記當前location..i我用下面的代碼,我想沒有任何代碼來放大地圖視圖..如何將標記添加到谷歌地圖v2上的當前位置?

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

看一看他們的文檔:https://developers.google.com/maps/documentation/android- API /標記。 – chRyNaN

回答

1

根據以下更改代碼:

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

請檢查我的編輯代碼..在哪裏我把這些代碼 –

+0

用你的代碼部分代替setOnMapClickListener()在cooment行下面的代碼。 –

1

試試這個

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 

進行縮放地圖上看,已經有一個默認功能。使用手勢,如果你想添加一個底部,您可以添加縮放控件

這裏是整個代碼

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

我dnt讓你,,,請告訴我哪一行我應該代替這個代碼,,, –

+0

@AhadMurtaza更新我的代碼 –

0

需要先通過在谷歌地圖onlicationchangelistener來獲得當前位置。這裏是代碼中的監聽器。

然後根據您獲得的位置放置標記。

下面是兼職

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)); 
} 
}; 

代碼中的監聽器添加到地圖。

mMap.setOnMyLocationChangeListener(myLocationChangeListener); 

這會將標記放入當前文件中。

+0

它是不推薦使用的方法 – Erum

1

嘗試這種方式這個工作對我來說

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 

} 

} 

輸出

相關問題