Java 当用户将标记添加到地图上时,如何访问标记?

Java 当用户将标记添加到地图上时,如何访问标记?,java,android,google-maps,google-maps-api-2,Java,Android,Google Maps,Google Maps Api 2,当用户单击地图上的某个位置时,将打开一个警告对话框,提示用户是否要添加标记(如果是,则添加标记)。我试图写另一个方法,如果用户通过这个标记,标记会改变颜色 我在写这个的标记检查部分时遇到了问题 我的代码: public void onMapClick(){ map.setOnMapClickListener(new OnMapClickListener() { @Override public void onMapClick(LatLng latlng)

当用户单击地图上的某个位置时,将打开一个警告对话框,提示用户是否要添加标记(如果是,则添加标记)。我试图写另一个方法,如果用户通过这个标记,标记会改变颜色

我在写这个的标记检查部分时遇到了问题

我的代码:

public void onMapClick(){
    map.setOnMapClickListener(new OnMapClickListener() {
        @Override
        public void onMapClick(LatLng latlng) {

            dialogBox(latlng);
        }
    });
}
private void dialogBox(final LatLng latlng) {
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MapActivity.this);

    alertDialogBuilder.setTitle("Add Marker");

    alertDialogBuilder
    .setMessage("Add marker?").setCancelable(false)
    .setPositiveButton("yes", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {

            double dialogLat = latlng.latitude;
            double dialogLng = latlng.longitude;

            dialogMarker = map.addMarker(new MarkerOptions()
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
            .position(latlng).title("dialog maker"));

            //if location hit, places marker around that area
            hitLocation(dialogLat,dialogLng);

        }
    })
    .setNegativeButton("no", new DialogInterface.OnClickListener() {

        //cancels
        }
    }); // create alert dialog show it
}
public void hitLocation( final double dialogLat, final double dialogLng){
    LocationListener ll = new LocationListener() {

        @Override
        public void onLocationChanged(Location location) {
            // TODO Auto-generated method stub

            double lat = location.getLatitude();
            double lon = location.getLongitude();

            final LatLng currentLatLon = new LatLng(lat, lon);


            //tracks weather or not person hit the location
            if((lat > (dialogLat- 0.0001) && lat < (dialogLat+ 0.0001)) &&
            (lon > (dialogLon - 0.0001) && lon < (dialogLon + 0.0001))){
                dialogMarker = map.addMarker(new MarkerOptions().position(currentLatLon)
            }
        } // other location listener methods
public void onmaclick(){
setOnMapClickListener(新的OnMapClickListener(){
@凌驾
公共无效的点击(LatLng LatLng){
对话框(latlng);
}
});
}
专用作废对话框(最终板条){
AlertDialog.Builder alertDialogBuilder=新建AlertDialog.Builder(MapActivity.this);
alertDialogBuilder.setTitle(“添加标记”);
alertDialogBuilder
.setMessage(“添加标记?”).setCancelable(false)
.setPositiveButton(“是”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
双对话框LAT=latlng.LATIONE;
双对话框lng=latlng.longitude;
dialogMarker=map.addMarker(新的MarkerOptions()
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
.位置(latlng).标题(“对话框生成器”);
//如果命中位置,则在该区域周围放置标记
hitLocation(dialogLat,dialogLng);
}
})
.setNegativeButton(“否”,新的DialogInterface.OnClickListener(){
//取消
}
}); // 创建警报对话框并显示它
}
公共位置(最终双对话框LAT、最终双对话框LNG){
LocationListener ll=新LocationListener(){
@凌驾
已更改位置上的公共无效(位置){
//TODO自动生成的方法存根
双纬度=location.getLatitude();
double lon=location.getLongitude();
最终板条currentLatLon=新板条(板条,长);
//跟踪天气或人员是否到达该位置
如果((lat>(对话框lat-0.0001)和&lat<(对话框lat+0.0001))&&
(lon>(dialogLon-0.0001)和&lon<(dialogLon+0.0001))){
dialogMarker=map.addMarker(新的MarkerOptions().position(currentLatLon)
}
}//其他位置侦听器方法

它一直到我在警报对话框的onClick方法中传递hitLocation(doubleLat,doubleLng)的位置。我认为应该发生的是,当我在地图上放置一个标记时,hitLocation应该检查我是否确实击中了用户设置的位置。

这一切是如何结合在一起的(至少对我来说)例如,我甚至不知道hitLocation(double,double)是如何被调用的,但我确实看到了一些问题

首先,这是打字错误吗

    if((lat > (dialogLat- 0.0001) && lat < (dialogLng+ 0.0001)) 
if((lat>(dialogLat-0.0001)和&lat<(dialogLng+0.0001))
你是说

    if((lat > (dialogLat- 0.0001) && lat < (dialogLat+ 0.0001)) 
if((lat>(对话框lat-0.0001)和&lat<(对话框lat+0.0001))
对话框**纬度**与对话框**Lng**

我想你最好用这样的方法来检查坐标是否接近

Math.abs(value1 - value2) < someTolerance
Math.abs(值1-2)

纬度和经度并不总是正的。

我们根本不清楚你所说的“它一直工作到我检查是否通过标记的部分”。我看不出你在哪里检查是否通过了任何标记。你在调用方法hitLocation();但我们看到的只是hitLocation的方法签名(double,double);…我认为您需要为hitLocation提供更多信息和使用正确参数编辑的更多代码。对于hitLocation,我希望输入用户在触摸地图时留下的lat和lng坐标,并且用户在该区域周围移动,然后在用户之前触摸的区域上显示一个红色标记。使用n解释我希望hitLocation做什么并修复打字错误,我将尝试实现Math.abs