通过触摸或点击在Android Google地图上添加标记

时间:2013-06-17 08:18:08

标签: android google-maps google-maps-markers marker touch-event

我是Android Developer的初学者。我想使用Google Map开发地图应用程序。 现在,我想在地图上通过触摸或点击在地图上添加标记。我不知道如何应用触摸事件来删除地图上的标记。请告诉我,如果有可能,请给我一些链接或例子。谢谢你,对不起我的英语。

4 个答案:

答案 0 :(得分:56)

尝试使用新的Google Map API v2

它易于使用,您可以像这样添加标记:

map.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
    @Override
    public void onMapClick(LatLng point) {
        allPoints.add(point);
        map.clear();
        map.addMarker(new MarkerOptions().position(point));
    }
});

Kotlin

map.setOnMapClickListener {
    allPoints.add(it)
    map.clear()
    map.addMarker(MarkerOptions().position(it))
}

请注意,您可能希望记住列表中的所有添加点(allPoints),以便稍后重新绘制或删除它们。记住这些要点的更好方法是记住每个对象的Marker对象 - 你可以从Marker函数得到addMarker对象,它有{ {1}}可以轻松地从地图中删除标记的功能。

答案 1 :(得分:15)

我使用的技术是:

googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {

                @Override
                public void onMapClick(LatLng point) {

                    MarkerOptions marker = new MarkerOptions().position(
                            new LatLng(point.latitude, point.longitude)).title("New Marker");

                    googleMap.addMarker(marker);

                System.out.println(point.latitude+"---"+ point.longitude);  
                }
            });
希望它有所帮助!!!

答案 2 :(得分:6)

此代码已成功运行我正在处理该代码,此代码适用于动态绘制

我认为这段代码可以帮助您更好地使用静态或动态两个地方   这段代码

double latval = Double.parseDouble(jsonobject.getString("lat"));
double longval = Double.parseDouble(jsonobject.getString("lon"));

mMap.addMarker(new MarkerOptions()
               .position(new LatLng( latval,    longval))
               .title(jsonobject.getString("country"))
               .snippet("4 E. 28TH Street From $15 /per night")
               .rotation((float) -15.0)
               .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE))
              );

if (i == 0) {
    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(
                                new LatLng(latval, longval), 7));
    mMap.addCircle(new CircleOptions()
                   .center(new LatLng(latval,longval))
                   .radius(5000)
                   .strokeColor(Color.RED)
                   .fillColor(Color.RED)); 
}

答案 3 :(得分:0)

尝试使用这些Tutorial 1Tutorial 2来了解Google地图

并参考此link to Stack Overflow Question以便在onTouch

上执行此操作