我有一个应用程序,您应该通过将地图移动到坐标并按下一步来从 Google 地图获取坐标。为了显示地图指向的位置,中间有一个黑色矩形,我需要将其变成一个小点。
最初框架是一个黑色矩形,宽度和高度设置为 8。所以我将其设为红色,将 WidthRequest 和 HeightRequest 设置为 1,并给它一个半径,如下所示
<Frame
BackgroundColor="Red"
Opacity="1"
WidthRequest="0.01"
HeightRequest="0.01"
CornerRadius="20"
InputTransparent="True"
HorizontalOptions="Center"
VerticalOptions="Center"
/>
这给出了这个圆圈:
这不完全是一个小圆圈。将宽度和高度请求设置为小于 1 会使它们的大小与 1 相同,即使它们是双倍的。
完整代码是这样的。我没有成功,如果有更好的方法可以做到这一点,我愿意接受建议
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ctrl="clr-namespace:DriverReporting.CustomControls"
xmlns:maps="clr-namespace:Xamarin.Forms.GoogleMaps;assembly=Xamarin.Forms.GoogleMaps"
x:Class="DriverReporting.Views.ManualMapPage"
Title="{Binding DisplayedValue}">
<ContentPage.ToolbarItems>
<ToolbarItem Text="Næste" Command="{Binding CommitCommand}" />
</ContentPage.ToolbarItems>
<Grid HorizontalOptions="Fill" VerticalOptions="Fill">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<ctrl:MapControl
Grid.RowSpan="2" x:Name="MapControl"
VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand"
CameraPosition="{Binding Value}"
InitialPosition="{Binding InitialLocation}"
/>
<Frame
BackgroundColor="Red"
Opacity="1"
WidthRequest="0.01"
HeightRequest="0.01"
CornerRadius="20"
InputTransparent="True"
HorizontalOptions="Center"
VerticalOptions="Center"
/>
</Grid>
</ContentPage>
原来我需要的只是一个 BoxView 而不是 Frame
<BoxView
WidthRequest="10"
HeightRequest="10"
Color="Red"
CornerRadius="5"
HorizontalOptions="Center"
VerticalOptions="Center"
/>