Множественный маркер на карте Google из onMapReady

#java #android #google-maps #google-maps-api-3

#java #Android #google-карты #google-maps-api-3

Вопрос:

Я пытаюсь добавить несколько маркеров на карту Google. Проблема, с которой я сталкиваюсь, заключается в том, что при добавлении первого маркера все остальные не добавляются, даже если значения широты и долготы разные.

Я использую API Google places для получения подробной информации и отображения информации на карте Google.

 public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    LatLng MyLoc = new LatLng(lati, lngi);
    mMap.addMarker(new MarkerOptions().position(MyLoc).title("My Location"));
    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(MyLoc, 17.0f));
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(MyLoc, 17));
    if (places == null) {
        Toast.makeText(this, "I have no places...", Toast.LENGTH_LONG).show();
        return;
    }

    Place[] items = new Place[places.size()];
    places.toArray(items);
    for(int i=0;i<items.length;i  ){
        double sLat = places.get(i).getGeometry().getLocation().getLat();
        double sLng = places.get(i).getGeometry().getLocation().getLng();
        LatLng latlngg = new LatLng(sLat, sLng);
        mMap.addMarker(new MarkerOptions()
                .position(latlngg)
                .title(places.get(i).getName())
                .snippet(places.get(i).getVicinity())
                .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
                .alpha(0.7f));
    }

}
  

Комментарии:

1. LatLng latlngg = new LatLng(lati, lngi); почему вы не используете sLat и sLng?

2. Да, я тоже использовал это, но все та же проблема

3. LatLng latlngg = new LatLng(sLat, sLng); Я думаю, вам следует изменить это, иначе все маркеры будут добавлены в одну и ту же точку.

4. У вас ошибка копирования / вставки, double sLng = places.get(i).getGeometry().getLocation().getLat(); должно быть что-то вроде double sLng = places.get(i).getGeometry().getLocation().getLongitude();

5. двойная планка = places.get(i).getGeometry().getLocation().getLat(); двойной sLng = places.get(i).getGeometry().getLocation().getLat(); LatLng latlngg = новый LatLng(sLat, sLng); mMap.addMarker(новыйMarkerOptions() .position(latlngg)

Ответ №1:

Ваш уровень масштабирования 17 слишком высок. Я боюсь, что ваши данные выпадают из вида карты. Перекрестная проверка после значительного уменьшения уровня масштабирования.