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); }
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); }
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 }
private void MoveMarker(MarkerOptions pin, Icon icon, double lat, double lng) { pin.InvokeIcon(icon); pin.InvokePosition(new LatLng(lat, lng)); }
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(); } } }
public void OnAnimationUpdate(ValueAnimator animation) { var value = animation.AnimatedValue; _markerOptions.InvokePosition((LatLng)value); }