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

34

我想在Android上使用Google Map开发地图应用程序。 现在,我想通过点击或触摸地图来在地图上添加标记。如何应用触摸事件以在地图上放置标记?


3
这回答解决了你的问题吗?在Android上使用Google地图在触摸位置添加标记 - Cœur
3个回答

82

尝试使用新的Google地图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对象-可以通过addMarker函数得到Marker对象结果,它具有一个remove()函数,可以轻松地从地图中删除标记。

1
在这里,“lstLatLngs.add(point);”的意思是什么?我的意思是,您没有澄清“lstLatLngs”是哪个对象。 - Kunal Dharaiya

20

我使用的技术是:

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);  
    }
});

希望它有所帮助!!!


5

这段代码已经成功运行,我正在处理这段用于动态绘制的代码。

我认为这段代码可以在静态或动态两种情况下都能帮助你使用。

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
@shiteru 这不应该被接受作为答案。它没有回答原始问题,但是这个答案回答了:https://dev59.com/pGQn5IYBdhLWcg3wCzek#17147121. 它可能帮助你解决了问题,但它并不包含问题的答案,并且对新访问者是具有误导性的。 - milosmns
这怎么成为被接受的答案了?它根本没有回答问题。 - AwaisMajeed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接