如何在 Google Maps v2 上将标记添加到当前位置?
Posted
技术标签:
【中文标题】如何在 Google Maps v2 上将标记添加到当前位置?【英文标题】:How to add markers to current location on Google Maps v2? 【发布时间】:2016-08-22 02:58:47 【问题描述】:我正在制作一个基于位置的提醒应用,并且想知道如何将标记添加到当前位置。
我正在使用以下代码:
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);
);
是否有任何方法可以缩放地图视图和/或将标记添加到当前位置?
【问题讨论】:
看看他们的文档:developers.google.com/maps/documentation/android-api/marker. 【参考方案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));
);
【讨论】:
用这些代码替换 cooment 行下方的 setOnMapClickListener() 代码部分。【参考方案2】:试试这个
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));
);
【讨论】:
我不明白你,,,请告诉我应该为这段代码替换哪一行,,,【参考方案3】:试试这个对我有用的方法
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
输出
【讨论】:
【参考方案4】:您首先需要通过 google maps 中的 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);
这会将标记放在当前位置。
【讨论】:
这是不推荐使用的方法以上是关于如何在 Google Maps v2 上将标记添加到当前位置?的主要内容,如果未能解决你的问题,请参考以下文章
在 Google Maps API v2 Android 中添加多个标记
添加大量标记时,Google Maps Android API v2 非常慢