gpt4 book ai didi

android - 经度和纬度的双值未传递给 googlemap 标记

转载 作者:行者123 更新时间:2023-11-30 02:02:05 25 4
gpt4 key购买 nike

我有一个包含 longs 纬度和经度的数据对象。我从 fragment 中的一个方法传递这些,调用父 Activity 方法来显示 googlemap。

问题是,经度和纬度的结果始终为 (0,0)。我已检查该对象是否正在设置并获得正确的数字。

fragment 和调用 showmap 中的数字是正确的,但标记一直显示为默认值 0,0。

我的 Activity xml 中有 map ,在框架布局中,我更改了可见性。 (我觉得就是这个问题,是空白图)

我在这上面花了几个小时,现在来到这里,手里拿着帽子。

这是代码的相关部分:

我的 fragment 代码:

/**
* Get latitude and longitude from dataobject and pass into
* showMap method of activity.
*/
public void showMap() {
double lat = dataObject.getLatitude();
double long_ = dataObject.getLongitude();
String name = dataObject.getName();

((MyActivity) getActivity()).showMap(lat, long_, name);
}

我的 Activity 代码:

public void showMap(double lat, double _long, String _title) {
GoogleMap googleMap = ((MapFragment) getFragmentManager().
findFragmentById(R.id.map)).getMap();
googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
Marker marker = googleMap.addMarker(new MarkerOptions()
.position(new LatLng(lat, _long)).title(_title));
googleMap.moveCamera(CameraUpdateFactory.zoomTo(5f));
}

我的 Activity xml:

<RelativeLayout
style="@style/RLayout1"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my">

....

<FrameLayout
android:visibility="gone"
...
<fragment
android:id="@+id/map"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:name="com.google.android.gms.maps.MapFragment"/>

我想我遗漏了一些重要的东西,但我不知道它是什么。

添加日志:

GoogleMap googleMap = ((MapFragment) getFragmentManager().
findFragmentById(R.id.map)).getMap();
//Log.
Log.d("1. act lat="+String.valueOf(lat),"act long="+String
.valueOf(_long) );
googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
//Log.
Log.d("2. act lat=" + String.valueOf(lat),
"act long=" + String.valueOf(_long));
Marker marker = googleMap.addMarker(new MarkerOptions()
.position(new LatLng(lat, _long)).title(_title));
//Log.
Log.d("3. act lat="+String.valueOf(lat),"act long="+String
.valueOf(_long) );
googleMap.moveCamera(CameraUpdateFactory.zoomTo(5f));
//Log.
Log.d("4. act lat="+String.valueOf(lat),"act long="+String
.valueOf(_long) );
FrameLayout frameLayout =
(FrameLayout) findViewById(R.id.third);
Log.d("5. act lat="+String.valueOf(lat),"act " +
"long="+String
.valueOf(_long) );
frameLayout.setVisibility(View.VISIBLE);
Log.d("6. act lat=" + String.valueOf(lat),
"act long=" + String.valueOf(_long));

07-09 05:57:37.147 32317-32317/thiscode.databasedemo D/1. act lat=-42.9﹕ act long=147.3 07-09 05:57:37.157 32317-32317/thiscode.databasedemo D/2. act lat=-42.9﹕ act long=147.3 07-09 05:57:37.167 32317-32317/thiscode.databasedemo D/3. act lat=-42.9﹕ act long=147.3 07-09 05:57:37.167 32317-32317/thiscode.databasedemo D/4. act lat=-42.9﹕ act long=147.3 07-09 05:57:37.167 32317-32317/thiscode.databasedemo D/5. act lat=-42.9﹕ act long=147.3 07-09 05:57:37.167 32317-32317/thiscode.databasedemo D/6. act lat=-42.9﹕ act long=147.3

最佳答案

在确认标记放置正确后,看起来唯一的问题是正确排列当前 View 。

应该这样做:

        LatLng latlng = new LatLng(lat, _long);

Marker marker = googleMap.addMarker(new MarkerOptions()
.position(latlng).title(_title));

CameraPosition cameraPosition = new CameraPosition.Builder()
.target(latlng).zoom(5).build();

googleMap.animateCamera(CameraUpdateFactory
.newCameraPosition(cameraPosition));

您可能需要添加这些导入:

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.model.CameraPosition;

关于android - 经度和纬度的双值未传递给 googlemap 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31302221/

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