当我尝试将标记添加到GoogleMap时,我遇到了麻烦
故事:我打开应用,然后打开包含Google地图的活动。 HTTP请求已正确执行,标记添加完美,没有任何问题。我可以点击每一个,等等。但是,如果我按下后退按钮,然后再次进入活动,所有标记都丢失...所以我调试试图找到方法被调用,是的它被调用。据说添加了标记(但我看不到它们)。
所以只有在我第一次打开活动时才有效。当我再次打开活动时......标记缺失。
以下是代码:
我的活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
...
// setup map
final MapFragment mapFragment = (MapFragment)getFragmentManager().findFragmentById(R.id.googleMap);
mapFragment.getMapAsync(this);
}
我有一个监听器,这个方法是由AsyncTask(postExecute)调用的,发了一个Http请求然后 收到了jsonArray - >添加标记
@Override
public void onRequestCompleted(final JSONArray json) {
// verified, json is correct
Log.i(Constant.TAG, "Ok! - " + json);
for (int i = 0; i < json.length(); i++) {
try {
// verified, place is correct
Place place = new Place(json.getJSONObject(i));
if (place != null) {
// Try with place
LatLng markerPosition = new LatLng(place.getLat(), place.getLon());
// setup marker
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.title(place.getPlaceName());
markerOptions.position(markerPosition);
// Try with default marker (hardcoded)
LatLng markerPosition = new LatLng(14.64281,-90.51271);
// setup marker
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.title("duka");
markerOptions.position(markerPosition);
mMap.addMarker(markerOptions)
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
我的XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/googleMap"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.MapFragment"/>
</LinearLayout>
由于上面的代码不起作用,我只尝试使用一个标记。但是输出是一样的。 (第一次打开,它工作。第二次没有)
runOnUiThread(new Runnable() {
public void run() {
// add marker here... but doesn't work
// Try with default marker (hardcoded)
LatLng markerPosition = new LatLng(14.64281,-90.51271);
// setup marker
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.title("duka");
markerOptions.position(markerPosition);
mMap.addMarker(markerOptions)
}
});
谢谢!