更新并删除Google地图中的特定标记

时间:2015-07-11 08:57:18

标签: android google-maps

我正在谷歌地图中显示公交车的位置,我从服务器上的总线数据库表中获取位置。我在删除或更新谷歌地图上的位置时遇到问题,因为当总线表中的经度和纬度发生变化时,始终会创建新标记。如何在Google地图中删除和更新特定标记?

我感谢任何帮助。

代码:

private void gotoLocation(double lat, double lng, String route_direct) {

    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
    final float zoom = 11;
    LatLng ll = new LatLng(lat, lng);
    if (lat != 0 && lng != 0 && !route_direct.isEmpty()) {
        MarkerOptions markerOpt = new MarkerOptions().title(route_direct)
                .position(ll).visible(true);

        Marker marker = map.addMarker(markerOpt);
        marker.showInfoWindow();
        CameraUpdate update = CameraUpdateFactory.newLatLngZoom(ll, zoom);
        map.moveCamera(update);

    }

}

3 个答案:

答案 0 :(得分:0)

我以这种方式解决了。我为标记创建了HashMap。

样品,

HashMap<String, Marker> markerlist = new HashMap<>();
markerlist.put(route_direct, yourmarker);//add marker to list
markerlist.get(route_direct);//get marker from list

然后在您的更新过程中,尝试此代码

    if(markerlist.containsKey(route_direct)){
        Marker marker = markerlist.get(route_direct);
        //update marker
    }else{
        //add marker or do anything 
    }

但要使用此流程,您需要为标记提供唯一数据,例如标记ID。

希望这会对你有所帮助。祝你好运。

答案 1 :(得分:0)

为每个标记定义变量 标记m1; 标记m2; 等

使用该变量对特定标记执行任何操作。删除特定标记

m1.delete(); m2.delete();

像这样的事情,如果您遇到任何问题,可以试着告诉我。

答案 2 :(得分:0)

在这里我们在didTap标记委托中使用了我们的项目,我们创建了两个函数,一个是Create marker,第二个是delete marker code,在IOS swift中给出 1.从API获得响应时调用CreateMarker函数 2.当您想从地图上删除标记时,调用DeleteMarker

//MARK: CreateMarker
func CreateMarker(TripLocation:[RECDATA])
{
    //let path = GMSMutablePath()
    for i in 0..<TripLocation.count
    {
        // Marker icon
        var image = UIImage(named: "ic_greenMark")
        // Get location coordinate
        let locationTujuan = CLLocation(latitude: Double(TripLocation[i].facilityLatitude ?? 0.0) , longitude: Double(TripLocation[i].facilityLongitude ?? 0.0) )
            image = UIImage(named: "ic_greenMark")
        // create marker
        let marker = GMSMarker()
        marker.position = CLLocationCoordinate2DMake(locationTujuan.coordinate.latitude, locationTujuan.coordinate.longitude)
            // marker.title = titleMarker
        marker.icon = image
        marker.map = MapView

        let camera = GMSCameraPosition.camera(withLatitude:CLLocationDegrees(TripLocation[i].facilityLatitude!), longitude: CLLocationDegrees(TripLocation[i].facilityLongitude ?? 0.0), zoom: 8)
            MapView.camera = camera
        // append marker into markers array to show all marker in map

        markers.append(marker)           
    }

}

//MARK: DeleteMarker
func DeleteMarker(marker:GMSMarker)
{
   // Create Temp Object array
   var Tempmarkers = [RECDATA]()
    //check marker is exist or not
   for obj in arrayRECDATA
    {
        let lat = Double(obj.facilityLatitude!)
        let log = Double(obj.facilityLongitude!)
        // remove marker from object array
        if marker.position.latitude != lat &&  marker.position.longitude != log
        {
           Tempmarkers.append(obj)

        }
   }
    // store temp array into original array
    arrayRECDATA = Tempmarkers
    // clean all marker and reload
    MapView.clear()
    CreateMarker(TripLocation: arrayRECDATA)

}

谢谢:)