谷歌地图Android API v2检测长按地图和添加标记无效
我想用长按在地图上添加一个标记谷歌地图Android API v2检测长按地图和添加标记无效,android,google-maps-markers,latitude-longitude,google-maps-android-api-2,supportmapfragment,Android,Google Maps Markers,Latitude Longitude,Google Maps Android Api 2,Supportmapfragment,我想用长按在地图上添加一个标记 onmaclick()中的Toast以正常点击方式显示。但长期的压力是不起作用的Toast。地图上也不显示标记 我之所以使用SupportMapFragment,是因为我想在Android 2.x设备上使用我的应用程序。我已经在安卓2.3.7版的NexusOne上测试了我的应用程序 这是我的密码 public class MainActivity extends FragmentActivity implements OnMapClickListe
onmaclick()
中的Toast
以正常点击方式显示。但长期的压力是不起作用的<长按时不会显示onMapLongClick()
中的code>Toast。地图上也不显示标记
我之所以使用SupportMapFragment
,是因为我想在Android 2.x设备上使用我的应用程序。我已经在安卓2.3.7版的NexusOne上测试了我的应用程序
这是我的密码
public class MainActivity extends FragmentActivity implements
OnMapClickListener, OnMapLongClickListener {
final int RQS_GooglePlayServices = 1;
private GoogleMap myMap;
Location myLocation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager myFragmentManager = getSupportFragmentManager();
SupportMapFragment mySupportMapFragment = (SupportMapFragment) myFragmentManager
.findFragmentById(R.id.map);
myMap = mySupportMapFragment.getMap();
myMap.setMyLocationEnabled(true);
myMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
// myMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
// myMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
// myMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
myMap.setOnMapClickListener(this);
myMap.setOnMapLongClickListener(this);
}
@Override
protected void onResume() {
super.onResume();
int resultCode = GooglePlayServicesUtil
.isGooglePlayServicesAvailable(getApplicationContext());
if (resultCode == ConnectionResult.SUCCESS) {
Toast.makeText(getApplicationContext(),
"isGooglePlayServicesAvailable SUCCESS", Toast.LENGTH_LONG)
.show();
} else {
GooglePlayServicesUtil.getErrorDialog(resultCode, this,
RQS_GooglePlayServices);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onMapClick(LatLng point) {
myMap.animateCamera(CameraUpdateFactory.newLatLng(point));
Toast.makeText(getApplicationContext(), point.toString(),
Toast.LENGTH_LONG).show();
}
@Override
public void onMapLongClick(LatLng point) {
myMap.addMarker(new MarkerOptions().position(point).title(
point.toString()));
Toast.makeText(getApplicationContext(),
"New marker added@" + point.toString(), Toast.LENGTH_LONG)
.show();
}
}
如何解决这个问题?我使用了这个。成功了
GoogleMap gm;
gm.setOnMapLongClickListener(this);
@Override
public void onMapLongClick(LatLng point) {
gm.addMarker(new MarkerOptions()
.position(point)
.title("You are here")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));
}
您没有设置图标。
尝试:
或
mMap.setOnMapLongClickListener(new
GoogleMap.OnMapLongClickListener() {
@Override
public void onMapLongClick (LatLng latLng){
Geocoder geocoder =
new Geocoder(MapMarkerActivity.this);
List<Address> list;
try {
list = geocoder.getFromLocation(latLng.latitude,
latLng.longitude, 1);
} catch (IOException e) {
return;
}
Address address = list.get(0);
if (marker != null) {
marker.remove();
}
MarkerOptions options = new MarkerOptions()
.title(address.getLocality())
.position(new LatLng(latLng.latitude,
latLng.longitude));
marker = mMap.addMarker(options);
}
});
mMap.setOnMapLongClickListener(新建)
GoogleMap.OnMapLongClickListener(){
@凌驾
在MaplongClick(LatLng LatLng)上的公共无效{
地理编码器=
新的地理编码器(MapMarkerActivity.this);
名单;
试一试{
列表=地理编码器.getFromLocation(latLng.latitude,
经度,1);
}捕获(IOE异常){
返回;
}
地址=list.get(0);
如果(标记!=null){
marker.remove();
}
MarkerOptions选项=新的MarkerOptions()
.title(地址.getLocation())
.位置(新车床)(车床纬度,
经度);
marker=mMap.addMarker(选项);
}
});
我忘了添加map.setOnMapLongClickListner(这个)
googleMap = supportMapFragment.getMap();
// Setting a click event handler for the map
googleMap.setOnMapClickListener(new OnMapClickListener() {
@Override
public void onMapClick(LatLng latLng) {
// Creating a marker
MarkerOptions markerOptions = new MarkerOptions();
// Setting the position for the marker
markerOptions.position(latLng);
// Setting the title for the marker.
// This will be displayed on taping the marker
markerOptions.title(latLng.latitude + " : " + latLng.longitude);
// Clears the previously touched position
googleMap.clear();
// Animating to the touched position
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
// Placing a marker on the touched position
googleMap.addMarker(markerOptions);
}
});
mMap.setOnMapLongClickListener(new
GoogleMap.OnMapLongClickListener() {
@Override
public void onMapLongClick (LatLng latLng){
Geocoder geocoder =
new Geocoder(MapMarkerActivity.this);
List<Address> list;
try {
list = geocoder.getFromLocation(latLng.latitude,
latLng.longitude, 1);
} catch (IOException e) {
return;
}
Address address = list.get(0);
if (marker != null) {
marker.remove();
}
MarkerOptions options = new MarkerOptions()
.title(address.getLocality())
.position(new LatLng(latLng.latitude,
latLng.longitude));
marker = mMap.addMarker(options);
}
});