【发布时间】:2017-07-28 08:52:20
【问题描述】:
我正在使用 node.js 环回框架,并尝试获取医院的位置。 我不断得到
"java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Double at " on MarkerOptions options = new MarkerOptions()
.position(new LatLng(hospital.getGeolocation().get("lat"), hospital.getGeolocation().get("lng")))
.title(hospital.getName());
即使似乎没有与强制转换相关的错误,也会出现此错误。我还确定了 hospital.getGeolocation().get("lng") 返回双精度类型。我真的不知道是什么问题!请帮我!
floatingSearchView.setOnSearchListener(new FloatingSearchView.OnSearchListener() {
@Override
public void onSuggestionClicked(final SearchSuggestion searchSuggestion) {
hospitalRepository.search(ImmutableMap.of("filter[where][name][like]", searchSuggestion.getBody()), new ListCallback<Hospital>() {
@Override
public void onSuccess(List<Hospital> hospitalObjects) {
Log.i("TAG", hospitalObjects.toString());
recyclerAdapter.swapData(hospitalObjects);
isMapMovedBySearch = true;
googleMap.clear();
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for(Hospital hospital : hospitalObjects) {
Log.i("TAG", hospital.toString());
double lat = hospital.getGeolocation().get("lat").doubleValue();
double lng = hospital.getGeolocation().get("lng").doubleValue();
LatLng latLng1 = new LatLng(lat, lng);
MarkerOptions options = new MarkerOptions()
.position(latLng1)
.title(hospital.getName());
builder.include(googleMap.addMarker(options).getPosition());
}
LatLngBounds bounds = builder.build();
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 0);
googleMap.moveCamera(cu);
}
public void onError(Throwable t){
Log.e("error", "Not connected to loopback server!");
Log.e("error", "TRACE", t);
}
});
mLastQuery = searchSuggestion.getBody();
}
@Override
public void onSearchAction(String query) {
mLastQuery = query;
hospitalRepository.search(ImmutableMap.of("filter[where][name][like]", query), new ListCallback<Hospital>() {
@Override
public void onSuccess(List<Hospital> hospitalObjects) {
isMapMovedBySearch = true;
googleMap.clear();
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for(Hospital hospital : hospitalObjects) {
Log.i("TAG", "Lag :" + hospital.getGeolocation().get("lat") );
Log.i("TAG","lng :" + hospital.getGeolocation().get("lng"));
MarkerOptions options = new MarkerOptions()
.position(new LatLng(hospital.getGeolocation().get("lat"), hospital.getGeolocation().get("lng")))
.title(hospital.getName());
//builder.include(googleMap.addMarker(options).getPosition());
googleMap.addMarker(options);
}
recyclerAdapter.swapData(hospitalObjects);
LatLngBounds bounds = builder.build();
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 0);
googleMap.moveCamera(cu);
}
public void onError(Throwable t){
Log.e("error", "Not connected to loopback server!");
Log.e("error", "TRACE", t);
}
});
}
});
Logcat
E/error: Not connected to loopback server!
E/error: TRACE
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Double
at com.yeomiae.dev.redmom.Fragments.HospitalFragment$4$1.onSuccess(HospitalFragment.java:432)
at com.strongloop.android.loopback.callbacks.JsonArrayParser.onSuccess(JsonArrayParser.java:31)
at com.strongloop.android.remoting.adapters.Adapter$JsonArrayCallback.onSuccess(Adapter.java:138)
at com.strongloop.android.remoting.adapters.Adapter$JsonCallback.onSuccess(Adapter.java:81)
at com.strongloop.android.remoting.adapters.RestAdapter$CallbackHandler.onSuccess(RestAdapter.java:220)
at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:276)
at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:134)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5430)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:913)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:706)
【问题讨论】:
-
你确定 HospitalFragment.java:432 是这一行 -> MarkerOptions options = new MarkerOptions() .position(new LatLng(hospital.getGeolocation().get("lat"), hospital.getGeolocation ().get("lng"))) .title(hospital.getName());?
标签: android dictionary casting loopback