Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取无效的双引号;不适用;用于在地图上放置多个标记时的Latlng值_Java_Android_Google Maps_Amazon Dynamodb_Google Maps Markers - Fatal编程技术网

Java 获取无效的双引号;不适用;用于在地图上放置多个标记时的Latlng值

Java 获取无效的双引号;不适用;用于在地图上放置多个标记时的Latlng值,java,android,google-maps,amazon-dynamodb,google-maps-markers,Java,Android,Google Maps,Amazon Dynamodb,Google Maps Markers,我正在开发一个应用程序,我想在地图上显示多个标记。 (标记来自数据库(dynamodb),值都是“STRING”而不是double)。在将double转换为所有“latitudes and longitues”的字符串之后,我得到了java.lang.NumberFormatException的一个异常:无效的double:“n/a”和应用程序崩溃。因为在表中,一个lat long表示“na”。(如图所示) 我被卡住了,不知道如何处理这个空值。我该付支票还是怎么办?提前谢谢 ((MapFragm

我正在开发一个应用程序,我想在地图上显示多个标记。 (标记来自数据库(dynamodb),值都是“STRING”而不是double)。在将double转换为所有“latitudes and longitues”的字符串之后,我得到了java.lang.NumberFormatException的一个异常:无效的double:“n/a”和应用程序崩溃。因为在表中,一个lat long表示“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();
                      }
                  }
              });

            }
        });
((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMapAsync(新的OnMapReadyCallback()){
@凌驾
4月1日公开作废(最终谷歌地图谷歌地图){
mMap=谷歌地图;
最终LatLng israel=新LatLng(31.0461,34.8516);
googleMap.addMarker(新MarkerOptions().position(israel).title(“israel”);
setMapType(googleMap.MAP\u TYPE\u 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);
setOnMapLoadedCallback(新的GoogleMap.OnMapLoadedCallback(){
@凌驾
加载时的公共无效(){
DDBExecutor.getInstance().getAllResolutions(mContext,新的DDBExecutor.OnResponseListener()){
@凌驾
公共void onResponse(对象结果、字符串消息){
List=newarraylist();
lstall.addAll((列表)结果);
对于(结算表:LST结算){
mMap.addMarker(新的MarkerOptions().position)(新的LatLng(Double.parseDouble(table.getX()),Double.parseDouble(table.getY()));
}
LatLngBounds.Builder=新的LatLngBounds.Builder();
建筑商。包括(以色列);
LatLngBounds bounds=builder.build();
CameraUpdate cu=CameraUpdateFactory.newLatLngBounds(边界,200);
移动摄像机(cu);
mMap.animateCamera(CameraUpdateFactory.zoomTo(8),2000,空);
试一试{
Kmlayer Kmlayer=新的Kmlayer(谷歌地图,R.raw.Resolutions,getApplicationContext());
kmlLayer.addLayerToMap();
Kmlayer Kmlayer1=新的Kmlayer(googleMap,R.raw.outposts,getApplicationContext());
kmlLayer1.addLayerToMap();
Kmlayer Kmlayer2=新Kmlayer(谷歌地图,R.raw.Resolutions_in_pal_nghbrhd,getApplicationContext());
kmlLayer2.addLayerToMap();
}catch(XMLPullParseRexE){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
});
}
});
  • 在@OnkarShelke给出的答案的catch块中,您可以 在mMap中手动添加默认值,而不是简单地 处理异常。例如:

    mMap.add(new MarkerOptions().position(new LatLng(10.5,1.2));
    // 10.5 and 1.2 could be your default values.
    
  • 或者因为您已经知道导致故障的错误值(n/a) 异常,您可以在尝试添加到
    mMap
    之前检查该值。例如:

    for (SettlementsTable table : lstSettlements){
        if (table.getX().equalsIgnoreCase("n/a") || table.getY().equalsIgnoreCase("n/a")) {
            // do something like add default values
        } else {
            mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(table.getX()), Double.parseDouble(table.getY()))));
        }
    }
    

  • 围着

    try {
        mMap.addMarker(new MarkerOptions().position(new 
                LatLng(Double.parseDouble(table.getX()), 
                        Double.parseDouble(table.getY()))));
    } catch (NumberFormatException ex){
        //do anything when exception occurs
    }
    

    第一个过滤器列表,其中包含沉降表对象,因此当对象字段中有n/a字符串时,不要将该字符串添加到您提供给标记对象进行打印的Arraylist中。

    该怎么做取决于您的应用程序。我的意思是您需要对其进行说明,但是否要要求用户修复数据?不显示该点?还有什么?这是您需要决定的。在这种情况下…只应不显示特定的Latlng,而应显示其余的值。我的意思是跳过“n\a”然后显示结果的其余部分。@GabeChan在这种情况下,捕获NumberFormatException并继续下一个数据点就足够了。好的,谢谢让我检查并更新您的命令检查它的double然后解析如果没有,然后将值设置为0是Ankit先生..如果有“n\a”,我将跳过,并在Arraylist中添加了下一个有效值。很高兴看到我们在这里联合起来解决我的问题。非常感谢:):)。