【问题标题】:Adding New Marker onLongMapClick Using Android Studio and Google Maps API使用 Android Studio 和 Google Maps API 添加新标记 onLongMapClick
【发布时间】:2016-01-24 06:15:22
【问题描述】:

我已经尝试了几个小时在下面的代码中添加一个新的标记 onLongMapClick。我搜索了很多,但似乎没有任何效果。我正在使用 Android Studio 1.5.1 和 Google Maps API。我正在 Nexus 6P 模拟器上测试我的应用程序。 API 23. 我在我认为代码应该去的底部的括号之间留空。下面的代码在公共类 BasicMapDemoActivity extends AppCompatActivity implements OnMapReadyCallback { 中,我似乎不知道该怎么做。谁能帮我做到这一点?我可以提供任何其他可能有用的信息。谢谢!

GoogleMap mMap;
private UiSettings mUiSettings;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.basic_demo);
    SupportMapFragment mapFragment =
            (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    if (item.getItemId() == R.id.menu_legal) {
        startActivity(new Intent(this, LegalInfoActivity.class));
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public void onMapReady(GoogleMap map) {

    mMap = map;
    mUiSettings = mMap.getUiSettings();
    mUiSettings.setZoomControlsEnabled(true);
    mUiSettings.setScrollGesturesEnabled(true);
    mUiSettings.setZoomGesturesEnabled(true);


mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
    @Override
    public void onMapClick(LatLng point) {
    }
});


mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
    @Override
    public void onMapLongClick(LatLng point) {
    }
});

mMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
    @Override
    public void onCameraChange(CameraPosition position) {
        float maxZoom = 7.0f;
        if (position.zoom > maxZoom) {
            mMap.animateCamera(CameraUpdateFactory.zoomTo(maxZoom));
        }
    }
});
}

}

【问题讨论】:

    标签: android google-maps events android-studio marker


    【解决方案1】:

    因为你已经有了mMap的参考,所以试试这段代码 (注:我没试过。)

    LatLng latlng= new LatLng(LATITUDE,LONGITUDE);
    mMap.setMyLocationEnabled(true);
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latlng, 13));
    mMap.addMarker(new MarkerOptions()
       .title("NAME THE MARKER POINT")
       .snippet("DESCRIPTION FOR MARKER HERE.")
       .position(latlng));
    

    【讨论】:

    • 非常感谢您的回复,但这并不是我想要的。我希望用户能够在他们自己的兴趣点上添加新的标记 onLongClick。由于某些原因,我还将 maxZoom 设置为 7.0f,并且对 MyLocation 服务不感兴趣。我不确定我的代码离我有多远,但我认为它应该在设置 onLongClick 侦听器之后进行?也不确定我是否应该使用(LatLng 点)来完成我想要完成的工作。这有意义吗?
    • mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { @Override public void onMapClick(LatLng point) { mMap.addMarker(new MarkerOptions() .position(point) .sn-p("") ); } });
    • 这就是最终为我工作的原因。我相信我只需要简单地通过点来识别位置,而不需要任何 LatLng
    【解决方案2】:

    您应该像这样在onMapLongClick 括号中添加一个标记

            mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
                @Override
                public void onMapLongClick(LatLng point) {
                    MarkerOptions options = new MarkerOptions()
                            .position(point);
                    Marker mMarker = mMap.addMarker(options);
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 2015-08-14
      • 2019-07-26
      相关资源
      最近更新 更多