Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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 谷歌地图:将标记保存在数组中,然后列出它们_Java_Android_Google Maps - Fatal编程技术网

Java 谷歌地图:将标记保存在数组中,然后列出它们

Java 谷歌地图:将标记保存在数组中,然后列出它们,java,android,google-maps,Java,Android,Google Maps,在用户在地图上创建标记后,我如何将其+所有属性(lat、long、title、snippet等)保存在结构/数组中,然后在单独的活动中列出它们?我应该创建一个关联每个标记的对象吗 以下是MapsActivity的代码: package com.geekybrackets.virtualtourguide; import android.content.Context; import android.content.Intent; import android.support.v4.app.Fr

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

以下是
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)));

            }
        }
    }

}

要使用已创建的标记,可以创建一个
列表

如果您需要将标记的值传递给另一个
活动
,因为标记是UI的一部分,因此不认为它是持久的,但是
标记选项
实现了
可包裹
,您可以使用以下意图将其发送给另一个活动:

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);
MarkerOptions[] markersArray = markers.toArray(new MarkerOptions[markers.size()]);
Intent intent = new Intent();
intent.putExtra("markers", markersArray);

嗯,谢谢你的详细回复,但是,在通过意向发送信息后,我不希望在发送后启动活动,而是希望通过单独的按钮触发活动。在使用意图时这可能吗?只需在列表上保存标记,创建意图并在必要时启动活动即可needed@antonio如何在其他活动中检索markersArray?我在这里真的很挣扎
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);
MarkerOptions[] markersArray = markers.toArray(new MarkerOptions[markers.size()]);
Intent intent = new Intent();
intent.putExtra("markers", markersArray);