我想使用Google地图Api在我当前的位置上添加标记。我在Android手机上测试了它,我只得到一张地图。我目前的位置没有标记。即使是我在代码中放入的吐司也没有显示出来。谁能帮我这个。 我在下面发布我的代码:
public class MainActivity extends Activity implements LocationListener {
GoogleMap map;
@Override
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);
Toast.makeText(getApplicationContext(),
location.getLatitude() +", "+location.getLongitude(),
Toast.LENGTH_LONG).show();
map.animateCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng(location.getLatitude(), location.getLongitude()), 16));
} }
答案 0 :(得分:1)
只需从代码中删除map.clear();
,然后添加marker.remove();
这对我有用..试试这个,
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//actionBar.getActionBar();
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
System.out.println("current "+locationManager);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 120000, 1, this);
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
addGoogleMap();
addMarkers();
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB) @SuppressLint("NewApi")
private void addGoogleMap() {
if(googleMap == null){
googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
googleMap.setOnMarkerClickListener(this);
googleMap.setOnMarkerDragListener(this);
}
}
private void addMarkers() {
if(googleMap != null)
{
lt = new LatLng(location.getLatitude(), location.getLongitude());
marker = googleMap.addMarker(new MarkerOptions().position(lt)
.title("Current location ").snippet("Race Start: 9:00 AM CST")
.draggable(false));
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
lt, 20));
}
}
@Override
public void onLocationChanged(Location location) {
//txtLat = (TextView) findViewById(R.id.textview1);
//txtLat.setText("Latitude:" + location.getLatitude() + ", Longitude:" + location.getLongitude());
System.out.println("loc changed");
//googleMap.clear();
marker.remove();
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
System.out.println("current "+locationManager);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 120000, 1, this);
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
lt = new LatLng(location.getLatitude(), location.getLongitude());
marker = googleMap.addMarker(new MarkerOptions().position(lt)
.title("Current location ").snippet("Race Start: 9:00 AM CST")
.draggable(false));
}
答案 1 :(得分:0)
Google Map提供了一种内置方法,如果您想使用谷歌地图获取位置。
map.getLatitude();
map.getLongitude();
尝试一下,它会起作用。
答案 2 :(得分:0)
您已经获得了这个位置:
location.getLatitude(), location.getLongitude()
答案 3 :(得分:0)
打开手机GPS,当它停止闪烁时,表示已获得该位置,然后将显示标记。