作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在用户在他的 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/
leaflet:一个开源并且对移动端友好的交互式地图 JavaScript 库 中文文档: https://leafletjs.cn/reference.html 官网(英文): ht
我是一名优秀的程序员,十分优秀!