2016-04-27 93 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 

} 

} 

输出

相关问题