Подтвердить что ты не робот

Код для добавления маркеров для сопоставления с помощью Android-карт google v2

У меня есть lat & long значения из database.how для отображения маркеров на основе lat & long значений с использованием android google map api v2.В первоначальных картах google google отображаются маркеры на основе элемента itemoverlay. В версии 2 я не знаю, как отображать маркеры.

    dbAdapter.open();
        Cursor points = dbAdapter.clustercall(Btmlft_latitude, toprgt_latitude,
                Btmlft_longitude, toprgt_longitude, gridsize1);
        int c = points.getCount();
        Log.d("count of points", "" + c);

        if (points != null) {
            if (points.moveToFirst()) {
                do {

                    int latitude = (int) (points.getFloat(points
                            .getColumnIndex("LATITUDE")) * 1E6);
                    int longitude = (int) (points.getFloat(points
                            .getColumnIndex("LONGITUDE")) * 1E6);

                    mapView.addMarker(new MarkerOptions().position(
                            new LatLng(latitude, longitude)).icon(
                            BitmapDescriptorFactory.defaultMarker()));

                } while (points.moveToNext());

            }
        }
        points.close();
        dbAdapter.close();

Это mycode.Я получаю lat & long значения из базы данных, но как добавить маркеры на основе значений lat & long для отображения.

Я прочитал андроидные карты google api v2.In, которые только дают статически добавленные данные маркеров

4b9b3361

Ответ 1

Вы должны использовать метод GoogleMap.addMarker(MarkerOptions); Я объяснил это в учебнике в моем блоге: http://bon-app-etit.blogspot.be/2012/12/add-informationobject-to-marker-in.html

В этом блоге вы найдете еще несколько постов, касающихся нового API Карт:

  • Переместить карту в текущее или другое местоположение
  • Создайте пользовательское окно InfoWindow
  • Свяжите геоданные или объекты с маркером

Ответ 2

Используйте класс Маркер

Значок, помещенный в определенную точку на поверхности карты. Значок маркера рисуется ориентированным на экран устройства, а не на поверхность карты; то есть это не обязательно приведет к изменению ориентации из-за поворотов карты, наклона или масштабирования.

Маркер имеет следующие свойства:

Anchor

Точка на изображении, которая будет помещена в позицию LatLng маркера. Это значение по умолчанию составляет 50% от левой части изображения и в нижней части изображения.

Позиция

Значение LatLng для позиции маркера на карте. Вы можете изменить это значение в любое время, если хотите переместить маркер.

Заголовок

Текстовая строка, отображаемая в информационном окне, когда пользователь удаляет маркер. Вы можете изменить это значение в любое время.

Отрывок

Дополнительный текст, отображаемый под заголовком. Вы можете изменить это значение в любое время.

Пиктограмма

Растровое изображение, отображаемое для маркера. Если значок не отображается, отображается значок по умолчанию. Вы можете указать альтернативную окраску значка по умолчанию, используя defaultMarker (float). Вы не можете изменить значок после создания маркера.

Состояние перетаскивания

Если вы хотите разрешить пользователю перетаскивать маркер, установите для этого свойства значение true. Вы можете изменить это значение в любое время. Значение по умолчанию - true.

Видимость

По умолчанию маркер виден. Чтобы сделать маркер невидимым, установите для этого свойства значение false. Вы можете изменить это значение в любое время.

GoogleMap map = ... // get a map.
   // Add a marker at San Francisco.
   Marker marker = map.addMarker(new MarkerOptions()
       .position(new LatLng(37.7750, 122.4183))
       .title("San Francisco")
       .snippet("Population: 776733"));

Ответ 3

Я предполагаю, что проблема заключается в том, что вы умножаете свои значения широты/долготы на 1E6 вместо того, чтобы делить их на 1E6. Если ваши сохраненные значения поступают из GeoPoints, это может быть вашей проблемой. В противном случае способ добавления маркеров в порядке и должен работать.

то есть. значения lat/lng, которые вы передаете новому LatLng(), должны выглядеть как 45.4, -95.5 NOT 45400000, -95500000

Проверьте следующий код:

//mMap is a GoogleMap and point is a GeoPoint
this.mMap.addMarker(getMarker(point, drawableId))

...

public MarkerOptions getMarker(GeoPoint point, int drawableId)
{
    return new MarkerOptions()
    .position(new LatLng(point.getLatitudeE6() / 1000000.0, point.getLongitudeE6() / 1000000.0))
    .icon(BitmapDescriptorFactory.fromResource(drawableId));
}