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

shi*_*eru 24 android google-maps marker google-maps-markers touch-event

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

小智 62

尝试使用新的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));
    }
});
Run Code Online (Sandbox Code Playgroud)

或在Kotlin:

map.setOnMapClickListener {
    allPoints.add(it)
    map.clear()
    map.addMarker(MarkerOptions().position(it))
}
Run Code Online (Sandbox Code Playgroud)

请注意,您可能希望记住列表中的所有添加点(allPoints),以便稍后重新绘制或删除它们.记住点的更好方法是记住每个点的Marker对象 - 您可以MarkeraddMarker函数中获取对象,它具有一个remove()可以轻松地从地图中删除标记的功能.


Aka*_*ore 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);  
    }
});
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!!!


小智 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)); 
}
Run Code Online (Sandbox Code Playgroud)

  • @shiteru这不应是公认的答案。它没有回答原始问题,但此回答有:/sf/answers/1200298501/。它可能帮助您解决了问题,但其中未包含问题的答案,并且可能对新访问者产生误导。 (2认同)