示例#1
0
        protected override void OnElementChanged(ElementChangedEventArgs <Page> e)
        {
            base.OnElementChanged(e);
            myAMapPage = e.NewElement as TencentMapPage;
            layout1    = new LinearLayout(this.Context);
            this.AddView(layout1);

            mapView = new MapView(this.Context)
            {
                LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent)
            };
            LatLng SHANGHAI = new LatLng(31.238068, 121.501654);

            mapView.Map.SetCenter(SHANGHAI);

            var pins = myAMapPage.Pins;

            Drawable d      = Resources.GetDrawable(Resource.Drawable.red_location);
            Bitmap   bitmap = ((BitmapDrawable)d).Bitmap;
            LatLng   latLng1;

            foreach (UserTaskEntInfo pin in pins)
            {
                latLng1 = new LatLng(pin.Longitude ?? 31.238068, pin.Latitude ?? 121.501654);
                var markOption = new MarkerOptions();
                markOption.InvokeIcon(new BitmapDescriptor(bitmap));
                markOption.InvokeTitle(pin.Name);
                markOption.InvokePosition(latLng1);
                var fix = mapView.Map.AddMarker(markOption);
                fix.ShowInfoWindow();
            }
            mapView.Map.SetZoom(15);
            mapView.OnCreate(bundle);
            layout1.AddView(mapView);
        }
        private void AddMarker(GoogleMap map, double lat, double lon, int title, int snippet)
        {
            MarkerOptions options = new MarkerOptions();

            options.InvokePosition(new LatLng(lat, lon));
            options.InvokeTitle(GetString(title));
            options.InvokeSnippet(GetString(snippet));

            map.AddMarker(options);
        }
示例#3
0
        private void setUpMap()
        {
            LatLng SHANGHAI = new LatLng(31.238068, 121.501654);

            aMap.MoveCamera(CameraUpdateFactory.NewLatLngZoom(SHANGHAI, 14));
            aMap.MapType = AMap.MapTypeNormal;

            var pins = myAMapPage.Pins;

            Drawable d      = Resources.GetDrawable(Resource.Drawable.red_location);
            Bitmap   bitmap = ((BitmapDrawable)d).Bitmap;
            LatLng   latLng1;

            foreach (UserTaskEntInfo pin in pins)
            {
                latLng1 = new LatLng(pin.Longitude ?? 31.238068, pin.Latitude ?? 121.501654);
                var markOption = new MarkerOptions();
                markOption.InvokeIcon(BitmapDescriptorFactory.FromBitmap(bitmap));
                markOption.InvokeTitle(pin.Name);
                markOption.InvokePosition(latLng1);
                var fix = aMap.AddMarker(markOption);
                fix.ShowInfoWindow();
            }

            aMap.SetLocationSource(this);                   // 设置定位监听
            aMap.UiSettings.MyLocationButtonEnabled = true; // 设置默认定位按钮是否显示
            aMap.MyLocationEnabled = true;                  // 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false
            //aMap.SetMyLocationType(AMap.LOCATION_TYPE_LOCATE);//设置定位的类型为跟随模式,3D地图才有;

            // 自定义系统定位小蓝点
            MyLocationStyle myLocationStyle = new MyLocationStyle();

            myLocationStyle.InvokeMyLocationIcon(BitmapDescriptorFactory.FromResource(Resource.Drawable.location_marker)); // 设置小蓝点的图标
            myLocationStyle.InvokeStrokeColor(Android.Graphics.Color.Black);                                               // 设置圆形的边框颜色
            myLocationStyle.InvokeRadiusFillColor(Android.Graphics.Color.Argb(100, 0, 0, 180));                            // 设置圆形的填充颜色
            myLocationStyle.InvokeStrokeWidth(1.0f);                                                                       // 设置圆形的边框粗细
            aMap.SetMyLocationStyle(myLocationStyle);
        }
示例#4
0
        protected override void OnElementChanged(ElementChangedEventArgs <Xamarin.Forms.View> e)
        {
            base.OnElementChanged(e);

            if (e.NewElement == null || e.OldElement != null)
            {
                return;
            }

            //e.NewElement就是承载的界面,这里就是PCL项目里面的MainPage
            //var mainPage = e.NewElement as TencentMapSamples;
            var mainPage = e.NewElement as Samples.Controls.TencentMap;

            //初始化mapView
            mapView = new MapView(this.Context);
            mapView.OnCreate(null);

            //初始化视图
            layout = new LinearLayout(this.Context);
            layout.AddView(mapView);
            this.AddView(layout);

            //这里可以比对以下我们的写法跟腾讯官网里Java写法的区别,可以看出Java里面的属性是set,get前缀,而在C#里面都被隐藏了,直接用C#惯用的属性写法来代替,而方法则还是同样的SetXXX(),GetXXX(),但是Java是camelCasing,C#用PascalCasing写法(博主非常喜欢C#写法,而很讨厌Java的写法 :-))。这些区别,都是Xamarin 里 绑定Java库的转换规则。

            #region TencentMap类
            //腾讯地图的设置是通过TencentMap类进行设置,可以控制地图的底图类型、显示范围、缩放级别、添加 / 删除marker和图形,此外对于地图的各种回调监听也是绑定到TencentMap。下面是TencentMap类的使用示例:

            //获取TencentMap实例
            TencentMap tencentMap = mapView.Map;
            //设置实时路况开启
            tencentMap.TrafficEnabled = true;
            //设置地图中心点
            tencentMap.SetCenter(new Com.Tencent.Mapsdk.Raster.Model.LatLng(30.605870, 104.068610));
            //设置缩放级别
            tencentMap.SetZoom(11);
            #endregion

            #region UiSettings类
            //UiSettings类用于设置地图的视图状态,如Logo位置设置、比例尺位置设置、地图手势开关等。下面是UiSettings类的使用示例:

            //获取UiSettings实例
            UiSettings uiSettings = mapView.UiSettings;
            //设置logo到屏幕底部中心
            uiSettings.SetLogoPosition(UiSettings.LogoPositionCenterBottom);
            //设置比例尺到屏幕右下角
            uiSettings.SetScaleViewPosition(UiSettings.ScaleviewPositionRightBottom);
            //启用缩放手势(更多的手势控制请参考开发手册)
            uiSettings.SetZoomGesturesEnabled(true);
            #endregion

            #region 使用marker
            //注意,这里要往resources/drawable/里添加一个red_location.png的图片
            var bitmap           = Resources.GetBitmap("red_location.png");
            BitmapDescriptor des = new BitmapDescriptor(bitmap);
            foreach (var item in mainPage.Options)
            {
                MarkerOptions options = new MarkerOptions();

                options.InvokeIcon(des);
                options.InvokeTitle(item.Title);
                options.Anchor(0.5f, 0.5f);
                options.InvokePosition(new LatLng(item.Lat, item.Lng));
                options.Draggable(true);
                Marker marker = mapView.AddMarker(options);
                marker.ShowInfoWindow();
            }

            #endregion
        }
示例#5
0
 private void MoveMarker(MarkerOptions pin, Icon icon, double lat, double lng)
 {
     pin.InvokeIcon(icon);
     pin.InvokePosition(new LatLng(lat, lng));
 }
示例#6
0
        private void ShowMarkers()
        {
            if (AddressSelectionMode == AddressSelectionMode.DropoffSelection)
            {
                var position = new LatLng(PickupAddress.Latitude, PickupAddress.Longitude);

                _destinationPin.Marker.Remove();
                _pickupOverlay.Visibility      = ViewStates.Invisible;
                _destinationOverlay.Visibility = ViewStates.Visible;

                if (PickupAddress.HasValidCoordinate())
                {
                    _pickupPin.Marker.Remove();
                    _pickupPin.InvokeIcon(_hailIcon);
                    _pickupPin.InvokePosition(GetMarkerPositionWithAnchor(position, _pickupPin.Icon));
                    Map.AddMarker(_pickupPin);
                }
                else
                {
                    _pickupPin.Marker.Remove();
                }
            }
            else if (AddressSelectionMode == AddressSelectionMode.PickupSelection)
            {
                _pickupPin.Marker.Remove();
                _destinationOverlay.Visibility = ViewStates.Invisible;
                _pickupOverlay.Visibility      = ViewStates.Visible;

                if (DestinationAddress.HasValidCoordinate())
                {
                    var position = new LatLng(DestinationAddress.Latitude, DestinationAddress.Longitude);
                    _destinationPin.Marker.Remove();
                    _destinationPin.InvokeIcon(_destinationIcon);
                    _destinationPin.InvokePosition(GetMarkerPositionWithAnchor(position, _destinationPin.Icon));
                    Map.AddMarker(_destinationPin);
                }
                else
                {
                    _destinationPin.Marker.Remove();
                }
            }
            else
            {
                _destinationOverlay.Visibility = ViewStates.Gone;
                _pickupOverlay.Visibility      = ViewStates.Gone;


                if (PickupAddress.HasValidCoordinate())
                {
                    var position = new LatLng(PickupAddress.Latitude, PickupAddress.Longitude);
                    _pickupPin.Marker.Remove();
                    _pickupPin.InvokeIcon(_hailIcon);
                    _pickupPin.InvokePosition(GetMarkerPositionWithAnchor(position, _pickupPin.Icon));
                    Map.AddMarker(_pickupPin);
                }
                else
                {
                    _pickupPin.Marker.Remove();
                }

                if (DestinationAddress.HasValidCoordinate())
                {
                    var position = new LatLng(DestinationAddress.Latitude, DestinationAddress.Longitude);
                    _destinationPin.Marker.Remove();
                    _destinationPin.InvokeIcon(_destinationIcon);
                    _destinationPin.InvokePosition(GetMarkerPositionWithAnchor(position, _destinationPin.Icon));
                    Map.AddMarker(_destinationPin);
                }
                else
                {
                    _destinationPin.Marker.Remove();
                }
            }
        }
示例#7
0
            public void OnAnimationUpdate(ValueAnimator animation)
            {
                var value = animation.AnimatedValue;

                _markerOptions.InvokePosition((LatLng)value);
            }