簡體   English   中英

無法通過OnMapReady方法訪問我的地圖

[英]Cannot access my map out of the OnMapReady method

我以前從未在Xamarin中做過任何事情,而在Android中則很少。 我確實知道C,C ++和一些C#。

這不是Xamarin形式。

我已經搜索了一段時間,卻一無所獲。 更令人沮喪的是,我發現人們在無法訪問時可以通過其他方法簡單地訪問其Google地圖。

我當然可以在這里訪問我的地圖。 這是有限的興趣,因為我想在初始化后進行交互。

public void OnMapReady(GoogleMap googleMap)
    {
        locationManager = GetSystemService(LocationService) as LocationManager;
        MapStyleOptions style;
        string styleString;
        using (StreamReader sr = new StreamReader(Assets.Open("map_style.json")))
            styleString = sr.ReadToEnd();
        style = new MapStyleOptions(styleString);
        googleMap.UiSettings.ZoomControlsEnabled = false;
        googleMap.UiSettings.CompassEnabled = false;
        googleMap.UiSettings.RotateGesturesEnabled = false;
        googleMap.UiSettings.TiltGesturesEnabled = false;
        googleMap.UiSettings.MyLocationButtonEnabled = false;
        googleMap.UiSettings.ZoomGesturesEnabled = false;
        googleMap.UiSettings.ScrollGesturesEnabled = false;
        googleMap.UiSettings.MapToolbarEnabled = false;
        googleMap.SetMapStyle(style);
        LatLng coords = new LatLng(lat, longi);
        CameraUpdate pos = CameraUpdateFactory.NewCameraPosition(new CameraPosition(coords, 19, 50, 0));
        googleMap.MoveCamera(pos);
        GMap = googleMap;
    }

在這里,我嘗試通過任何可能的方式訪問我的地圖。 評論的內容無效,我還嘗試聲明了指針,以后我將在OnMapReady中將其分配給googlemap,這是不允許的。

    public void OnLocationChanged(Location location)
    {
        lat = location.Latitude;
        longi = location.Longitude;
        LatLng coords = new LatLng(lat, longi);
        CameraUpdate pos = CameraUpdateFactory.NewCameraPosition(new CameraPosition(coords, 19, 50, 0));
        //googleMap.MoveCamera(pos); 
        //FragmentManager.FindFragmentById<MapFragment>(Resource.Id.googlemap).???
    }

我見過人們只是從任何地方訪問他們的Google地圖。 上面的所有代碼均來自我的主要活動。

我不知道它是否重要,但這是整個axml文件。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment  
        android:id="@+id/googlemap"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent"  
        class="com.google.android.gms.maps.MapFragment" />  
</RelativeLayout>

所以,大主意是,只要位置發生變化,我就想移動地圖,方法是在OnLocationchanged中執行以下操作

googleMap.MoveCamera(pos);

提前致謝。

您存儲在一個名為變量的GoogleMap的實例GMap在你結束OnMapReady

因此,在您的OnLocationChanged使用該實例:

GMap?.MoveCamera(pos); 

moveCamera只能在主線程上調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM