gpt4 book ai didi

java - 谷歌地图 : Save markers in an array and then list them

转载 作者:行者123 更新时间:2023-11-29 19:44:16 25 4
gpt4 key购买 nike

在用户在他的 map 上创建标记后,我如何将它们及其所有属性(lat、long、title、snippet 等)保存在结构/数组中,然后在单独的 Activity 中列出它们?我应该创建一个关联每个标记的对象吗?

这是 MapsActivity 的代码:

package com.geekybrackets.virtualtourguide;

import android.content.Context;
import android.content.Intent;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.util.Log;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.WeakHashMap;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

public GoogleMap mMap;
double lat = 0;
double lon = 0;
static final int GET_DETAILS = 0;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);

}


@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {

public void onMapClick(LatLng latLng) {
lat = latLng.latitude;
lon = latLng.longitude;

startActivityForResult(new Intent(MapsActivity.this,newMarker.class), GET_DETAILS);

}
});


}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == GET_DETAILS) {
if (resultCode == RESULT_OK) {
String marker_title=data.getStringExtra("title");
Marker m = mMap.addMarker(new MarkerOptions()
.position(new LatLng(lat, lon))
.title(marker_title));
mMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(lat, lon)));

}
}
}

}

最佳答案

要使用创建的标记,您可以创建一个 List<Marker> :

private List<Marker> markers = new ArrayList<Marker>();

然后将创建的标记添加到其中:

Marker m = mMap.addMarker(new MarkerOptions()
.position(new LatLng(lat, lon))
.title(marker_title));
markers.add(m);

如果您需要将标记的值传递给另一个 Activity ,因为标记是 UI 的一部分,所以它不会被认为是持久化的,但是 MarkerOptions工具 Parcelable你可以使用 Intent 将它发送到另一个 Activity :

List<MarkerOptions> markers = new ArrayList<MarkerOptions>();

MarkerOptions markerOptions = new MarkerOptions()
.position(new LatLng(lat, lon))
.title(marker_title);
Marker m = mMap.addMarker(markerOptions);
markers.add(markerOptions);

然后,您可以使用 intents 发送列表:

MarkerOptions[] markersArray = markers.toArray(new MarkerOptions[markers.size()]);
Intent intent = new Intent();
intent.putExtra("markers", markersArray);

关于java - 谷歌地图 : Save markers in an array and then list them,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38100291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com