【问题标题】:Facing issues on getting multiple marker through DynamoDb面临通过 DynamoDb 获取多个标记的问题
【发布时间】:2017-10-24 12:39:22
【问题描述】:

我是 android 新手,正在开发一个基于地图的应用程序,我想在其中显示多个标记(大约 1000 个或更多),我已经使用 dynamo db 完成了所有步骤并将结果存储在列表中。现在,当我用谷歌搜索在地图中显示多个标记时,我有一个解决方案,我必须将数据存储在数组中,然后将其放入循环中。我将标记存储在字符串 X、Y 和 XY 中。 我想在地图上显示。请仔细阅读代码,让我知道如何获取 X、Y 和 XY 的值。

Settlements.java

private String X;
private String Y;
private String XY;
private String "AreaName"

@DynamoDBHashKey(attributeName = "AreaName")
public String getAreaName() {
    return AreaName;
}

public void setAreaName(String AreaName) {
    this.AreaName = AreaName;
}

@DynamoDBAttribute(attributeName = "X")
public String getX() {
    return X;
}

public void setX(String x) {
    X = x;
}

@DynamoDBAttribute(attributeName = "Y")
public String getY() {
    return Y;
}

public void setY(String y) {
    Y = y;
}

@DynamoDBAttribute(attributeName = "XY")
public String getXY() {
    return XY;
}

public void setXY(String XY) {
    this.XY = XY;
}

这是我的 MainActivity。

 public class NavigationDrawerPeaceNow extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
        ImageView imageView;
        OutpostsTable outpostsTable;
        private GoogleMap googleMap;
        private Context mContext;
        private List<SettlementsTable> lstSettlements = new ArrayList<>();

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_navigation_drawer_peace_now);
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            imageView = (ImageView) findViewById(R.id.layersiv);
            setSupportActionBar(toolbar);

            DDBExecutor.getInstance().getAllSettlements(mContext, new DDBExecutor.OnResponseListener() {
                @Override
                public void onResponse(Object result, String message) {
                    lstSettlements.addAll((List<SettlementsTable>) result);



                    }
                }
            });


            ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMapAsync(new OnMapReadyCallback() {
                @Override
                public void onMapReady(GoogleMap googleMap) {
                    try {
                        KmlLayer kmlLayer = new KmlLayer(googleMap, R.raw.settlements, getApplicationContext());
                        kmlLayer.addLayerToMap();
                        KmlLayer kmlLayer1 = new KmlLayer(googleMap, R.raw.outposts, getApplicationContext());
                        kmlLayer1.addLayerToMap();
                        KmlLayer kmlLayer2 = new KmlLayer(googleMap, R.raw.settlements_in_pal_nghbrhd_styled, getApplicationContext());
                        kmlLayer2.addLayerToMap();

                    } catch (XmlPullParserException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    LatLng israel = new LatLng(31.0461, 34.8516);
                    googleMap.addMarker(new MarkerOptions().position(israel).title("israel"));

                    googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
                    CameraPosition camPos = new CameraPosition.Builder().target(new LatLng(31.0461, 34.8516)).zoom(8).tilt(70).build();
                    CameraUpdate camUpd3 = CameraUpdateFactory.newCameraPosition(camPos);
                    googleMap.animateCamera(camUpd3);
                }


            });

【问题讨论】:

  • 这里有 X、Y 和 XY 纬度、语言和标题吗?
  • @keshav 是的.. 它们是纬度和经度

标签: android google-maps amazon-dynamodb google-maps-markers kml


【解决方案1】:

为什么不用SettlementsTable的列表来做呢

for (SettlementsTable settlementsTable :lstSettlements) {
            LatLng latLng=new LatLng(Double.parseDouble(settlementsTable.getX()),Double.parseDouble(settlementsTable.getY()));
            googleMap.addMarker(new MarkerOptions().position(latLng).title(settlementsTable.getXY()));
        }

【讨论】:

  • 谢谢你,先生,让我检查一下,并将投票给这个答案。
  • 它在尝试调用虚拟方法'com.google.android.gms.maps.model.Marker com.google.android.gms.maps.GoogleMap.addMarker(com.google.android .gms.maps.model.MarkerOptions)' 在空对象引用上
  • 你需要把这个放在 googleMap.addMarker(new MarkerOptions().position(israel).title("israel"));行并删除此行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-26
  • 1970-01-01
相关资源
最近更新 更多