Как сохранить маркеры карты в базе данных sql lite с заметками?

Я до сих пор выяснил, как получить маркер на экране, нажав, и он показывает числа долготы и широты, я хочу иметь возможность сохранять маркеры в базе данных SQL lite с примечанием к маркеру, поэтому, когда карта загружена, а маркеры загружены вместе с картой, когда пользователь нажимает, информация о маркере отображается над маркером. Вот мой класс карты:

public class Map extends  FragmentActivity {






GoogleMap googleMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map);
    setUpMapIfNeeded();

    SupportMapFragment supportMapFragment = (SupportMapFragment)
    getSupportFragmentManager().findFragmentById(R.id.map);

    // Getting a reference to the map
    googleMap = supportMapFragment.getMap();


    googleMap.setOnMapClickListener(new OnMapClickListener() {

        @Override
        public void onMapClick(LatLng latLng) {

            // Creating a marker
            MarkerOptions markerOptions = new MarkerOptions();

            // Setting the position for the marker
            markerOptions.position(latLng);

            // Setting the title for the marker.
            // This will be displayed on taping the marker
            markerOptions.title(latLng.latitude + " : " + latLng.longitude);

            // Clears the previously touched position
            googleMap.clear();

            // Animating to the touched position
            googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));

            // Placing a marker on the touched position
            googleMap.addMarker(markerOptions);
        }
    });
}


  @Override
    protected void onResume() {
        super.onResume();
        setUpMapIfNeeded();
    }



  private void setUpMapIfNeeded() {
        // Do a null check to confirm that we have not already instantiated the map.
        if (googleMap == null) {
            // Try to obtain the map from the SupportMapFragment.
            googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
                    .getMap();
            // Check if we were successful in obtaining the map.
            if (googleMap != null) {
                setUpMap();
            }
        }
    }


  private void setUpMap() {

      googleMap.setMyLocationEnabled(true);
      googleMap.getMyLocation();
    }


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

}


person deucalion0    schedule 27.01.2013    source источник


Ответы (1)


Вам нужно установить прослушиватель кликов на карте (или прослушиватель LongClick) следующим образом:

map.setOnMapClickListener(new OnMapClickListener() {

        @Override
        public void onMapClick(LatLng point) {

        }
    });

В этом слушателе вы получите точку LatLng позиции щелчка на карте. Затем вы просто создадите маркер следующим образом:

map.addMarker(new MarkerOptions()
        .position(point)
        .title("title")
        .snippet("snippet")
        .icon(icon));

Для сохранения маркеров просто используйте List или HashMap, потому что у карты нет такого метода для получения добавленных маркеров (возможно, я ошибаюсь).

Надеюсь это поможет.

person Koso    schedule 27.01.2013
comment
Спасибо, я попробую ваш код и посмотрю, смогу ли я заставить его работать! - person deucalion0; 28.01.2013
comment
Ваш ответ был крошечной частью того, что я в конце концов придумал, но он дал хорошее начало, возьмите награду. - person deucalion0; 07.02.2013