在地图上绘制标记时遇到麻烦,我能够从Firebase获取我的用户的纬度和经度并将其存储到我的数组列表中,我的问题是我如何能够全局设置我的数组列表?这是我的代码。
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
private GoogleMap googleMap;
private MarkerOptions options = new MarkerOptions();
private ArrayList<LatLng> latlngs = new ArrayList<>();
private ArrayList<String> Names = new ArrayList<>();
String Lat ,Lon,Names1;
double latitude , longitude;
@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);
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("Positions");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot chidSnap : dataSnapshot.getChildren()) {
Lat = String.valueOf(chidSnap.child("Latitude").getValue());
Lon = String.valueOf(chidSnap.child("Longitude").getValue());
Names1 = String.valueOf(chidSnap.getKey());
latitude= Double.parseDouble(Lat);
longitude= Double.parseDouble(Lon);
latlngs.add(new LatLng(latitude, longitude));
Names.add(Names1);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
// System.out.println(Names);
}
/**
* Manipulates the map once available.
* This callback is triggered when the map is ready to be used.
* This is where we can add markers or lines, add listeners or move the camera. In this case,
* we just add a marker near Sydney, Australia.
* If Google Play services is not installed on the device, the user will be prompted to install
* it inside the SupportMapFragment. This method will only be triggered once the user has
* installed Google Play services and returned to the app.
*/
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
for (LatLng point : latlngs) {
options.position(point);
options.title("Users");
options.snippet("someDesc");
googleMap.addMarker(options);
}
}
}
我不知道这东西有什么问题,不知何故,我的地图没有显示标记,我的列表“latlngs”显示“0.0,0.0”我不知道如何全局设置我的latlngs,因为它在从Firebase获取数据的代码中。
对Firebase的查询是一个异步过程。因此,您的数据更改可能是在onMapReady之后执行的。请尝试以下操作:
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot chidSnap : dataSnapshot.getChildren()) {
....
}
if(mMap != null) {
for (LatLng point : latlngs) {
options.position(point);
options.title("Users");
options.snippet("someDesc");
mMap.addMarker(options);
}
}
}
或者调用mapFragment.getMapAsync(MapsActivity.this);
从内部onDataChange
我有代码允许我输入带有纬度和经度的位置名称,然后地图用标记显示位置。 我遇到的问题是,我希望地图显示所有位置,每个位置都有自己的标记。 下面是我用来获取地图上显示的一个位置的代码 非常感谢您的帮助 我没有错误只是显示了一个位置,我已添加到Firebasedatabase
我正在寻找一个javascript库,支持通过邮政编码或城市作为参数的能力,并获得一个列表的x, y坐标绘制一个多边形使用谷歌地图? 这是否存在?谷歌地图API支持这样的查询吗?我正在寻找一个类似于谷歌用来在谷歌查询中绘制地图的坐标数组:
我有一个JSON,它是: 我正在使用钩子来提取数据。 和已成功提取。 但当我修改时,将其代码为 我得到这个错误: “weather”未定义为no-undef 如何绘制?
我有这样一段代码,它从数据库中获取详细信息,并将其放入php数组中,然后将该数组传递给javascript以生成Google地图: 我的问题是为什么地图上没有标记?没有返回错误,但也没有标记。我必须在php循环中移动javascript代码吗?如果我通知locations.length,我得到1作为locations.length。为什么js将位置数组计算为1个位置?提前谢谢!
当在谷歌地图数据层上绘制多边形时,我想处理用户绘制第一个点、第二个点和随后的点时发生的事件,以便用户界面可以给出不同的用户指导,例如: 没有画点:点击画第一个点 绘制第一个点:点击绘制下一个点 画第二个点:点击添加另一个点或点击第一个点结束 使用数据库在数据层上绘制闭合点时,会发生“addfeature”事件。使用图形库绘制终点时,会出现不同的事件,例如polygoncomplete。 为了查看第
问题内容: 我想在Google Maps android上显示带有多个标记的位置,问题是当我运行我的应用程序时,它只显示一个位置/标记,这是我的代码: 我不知道我的错在哪里,希望有人能帮助我解决我的问题,非常感谢你 问题答案: 用这个: 或者,您也可以使用以下命令: 其中 纬度 和 经度 是存储在数组列表中的具有不同名称的字符串.....