【问题标题】:Add Marker on Android Google Map via touch or tap通过触摸或点击在 Android 谷歌地图上添加标记
【发布时间】:2013-06-13 03:32:46
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

尝试使用新的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 对象 - 您可以从 addMarker 函数中获取 Marker 对象,它有一个 remove() 函数,可以轻松删除地图上的标记。

【讨论】:

  • 这里是什么 lstLatLngs.add(point); ?我的意思是 lstLatLngs 哪些反对你不澄清?
【解决方案2】:

我使用的技术是:

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

希望对你有帮助!!!

【讨论】:

    【解决方案3】:

    此代码运行成功我正在处理此代码用于Dynamic Draw的代码

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

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

    【讨论】:

    • @shiteru 这不应该是公认的答案。它没有回答原始问题,但这个答案可以:stackoverflow.com/a/17147121/2102748。它可能帮助您解决了问题,但它不包含问题的答案,并且会误导新访问者。
    • 这是怎么被接受的答案?它根本没有回答问题。
    猜你喜欢
    • 1970-01-01
    • 2017-10-08
    • 2011-01-11
    • 2018-12-09
    • 2011-10-11
    • 2011-10-06
    • 2018-07-31
    • 1970-01-01
    相关资源
    最近更新 更多