谷歌地图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);
        }
     });