Определение ViewCell, которое у вас есть, определяет Grid с одной ячейкой внутри (одна строка и один столбец. Из вашего примера пользовательского интерфейса это больше похоже на то, что вам нужно, это 2 столбца и 3 строки, что-то вроде этого:
<ViewCell>
<Grid Padding="10,10,10,10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Label Text="{Binding Name}" FontSize="15" TextColor="Black" Grid.Row="0" Grid.Column="0"/>
<Label Text="{Binding Description}" FontSize="15" TextColor="Black" Grid.Row="1" Grid.Column="0"/>
<Label Text="{Binding Lon}" FontSize="15" TextColor="White" BackgroundColor="#2FA4D9" Grid.Row="0" Grid.Column="1"/>
<Label Text="{Binding Lat}" FontSize="16" TextColor="White" BackgroundColor="#2FA4D9" Grid.Row="1" Grid.Column="1"/>
</Grid>
</ViewCell>
Это основано на образце кода, который у вас есть, поэтому не будет полностью реализовывать дизайн пользовательского интерфейса, но должен стать ближе. Ключ заключается в том, чтобы метки были в отдельной ячейке в сетке, а невсе они в одном StackLayout.
Вам также, вероятно, потребуется установить RowHeight (как отметил Джейсон) или установить HasUnevenRows = "true" в ListView.