java - Android - 从 MapsActivity 将标记添加到 fragment map

标签 java android google-maps android-fragments google-maps-markers

我遇到了标题中写的问题

这是来自MapsActivity和fragment的2个代码

    @Override
    public void onMapReady(GoogleMap googleMap) {
        map = googleMap;
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {


            return;
        }
        map.setMyLocationEnabled(true);
        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        LocationListener locationListener = new LocationListener() {
            public void onLocationChanged(Location location) {
                // redraw the marker when get location update.
                LatLng latlng = new LatLng(location.getLatitude(), location.getLongitude());
                map.addMarker(new MarkerOptions().position(latlng).title("Marker").snippet(Float.toString(location.getSpeed())));
                map.moveCamera(CameraUpdateFactory.newLatLng(latlng));    
            }
       };
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 15, locationListener);
    }
}

fragment 图

public class Tab2Map extends Fragment implements OnMapReadyCallback {
    GoogleMap map;
    public Tab2Map() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View v=inflater.inflate(R.layout.fragment_tab2, container, false);

        return v;
    }
    @Override
    public  void onViewCreated(View view,@Nullable Bundle savedInstanceState){
        super.onViewCreated(view,savedInstanceState);
        SupportMapFragment mapFragment=(SupportMapFragment)getChildFragmentManager().findFragmentById(R.id.fragment);
        mapFragment.getMapAsync(this);

    }
    @Override
    public void onMapReady(GoogleMap googleMap) {

        }
}

如何将 MapsActivity 中的标记放入 fragment 中,因为这是在 map 中打印它的唯一方法。应用程序具有操作栏选项卡,并且 map 只能通过 fragment 显示?

最佳答案

onMapReady(GoogleMap googleMap)中调用此方法

 private void updateMap(List<SubOrdinateLocation> locations) {
    if (markers != null) {
        markers.clear();
        mGoogleMap.clear();
    }
    for (SubOrdinateLocation sol : locations) {
        if (sol.latitude != 0.0 && sol.longitude != 0.0) {
            LatLng sydney = new LatLng(sol.latitude, sol.longitude);
            Marker marker = mGoogleMap.addMarker(new MarkerOptions().position(sydney).title(sol.subOrdinateId).snippet(sol.subOrdinateName));
            markers.add(marker);
        }
    }
    if (markers != null && markers.size() > 0) {
        LatLngBounds.Builder builder = new LatLngBounds.Builder();
        for (Marker marker : markers) {
            builder.include(marker.getPosition());
        }
        LatLngBounds bounds = builder.build();
        LatLng center = bounds.getCenter();
        builder.include(new LatLng(center.latitude - 0.001f, center.longitude - 0.001f));
        builder.include(new LatLng(center.latitude + 0.001f, center.longitude + 0.001f));
        bounds = builder.build();
        int padding = 0; // offset from edges of the map in pixels
        CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);
        mGoogleMap.animateCamera(cu);
    }
}

根据您的需要进行修改。

关于java - Android - 从 MapsActivity 将标记添加到 fragment map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52606330/

相关文章:

java - 加载 url 而不更改 url

android - 如何使用 glide 将可绘制文件夹中的 GIF 图像加载到 ImageView 中?

javascript - 是否可以使用 Google Maps API V3 计算两个英国邮政编码之间的陆路交通距离?

java - 单击按钮时获取当前位置

java - 如何从 xml 响应中检索字段

java - 读取一个文件一个jar

java - 如何使用 iText 查找文本并将其替换为 pdf 文件

android - 如何在 Android 中获取当前日期?

android - 如何在android中的alertdialog中始终显示滚动条?

ios - 使用 CLLocation 和 Google Map 获取楼层信息的问题