【发布时间】:2017-10-26 13:21:43
【问题描述】:
我正在开发一个应用程序,我想在地图上显示多个标记。 (标记来自数据库(dynamodb),值都在“STRING”中,而不是双精度)。将双精度转换为所有“纬度和经度”的字符串后,出现 java.lang.NumberFormatException: Invalid double: "n/a" 和应用程序崩溃的异常。因为在表格中,一拉长显示“na”。 (如图)
我被卡住了,不知道如何处理这个空值。我应该放一些支票还是什么?提前致谢
((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(final GoogleMap googleMap) {
mMap = googleMap;
final 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);
mMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
DDBExecutor.getInstance().getAllSettlements(mContext, new DDBExecutor.OnResponseListener() {
@Override
public void onResponse(Object result, String message) {
List<SettlementsTable> lstSettlements = new ArrayList<>();
lstSettlements.addAll((List<SettlementsTable>) result);
for (SettlementsTable table : lstSettlements){
mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(table.getX()), Double.parseDouble(table.getY()))));
}
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(israel);
LatLngBounds bounds = builder.build();
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 200);
mMap.moveCamera(cu);
mMap.animateCamera(CameraUpdateFactory.zoomTo(8), 2000, null);
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, getApplicationContext());
kmlLayer2.addLayerToMap();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
});
【问题讨论】:
-
做什么取决于你的应用。我的意思是你需要考虑它,但你想要求用户修复数据吗?不显示那个点?还有什么?这是你需要决定的事情。
-
在这种情况下......只有那个特定的 Latlng 不应该显示,但其余的值应该显示。我的意思是跳过“n\a”并显示其余的结果。 @GabeSechan
-
在这种情况下,捕获 NumberFormatException 并移动到下一个数据点就足够了。
-
好的,谢谢,让我检查并支持您的评论
-
检查它的双倍然后解析,如果不是然后将值设置为0
标签: java android google-maps amazon-dynamodb google-maps-markers