0
votes

I want to add a pin on a certain location on a map for a windows phone 8.0 app. My code so far is the following:

private async void Button_Click(object sender, RoutedEventArgs e)
{
    BasicGeoposition bGeo = new BasicGeoposition();
    bGeo.Latitude = 37.4333;
    bGeo.Longitude = 24.9167;

    Geopoint geoPoint = new Geopoint(bGeo,0);

    myMap.ZoomLevel = 13;
    myMap.Center = geoPoint;
}


private void AddMapIcon()
{
    MapIcon MapIcon1 = new MapIcon();
    MapIcon1.Location = new Geopoint(new BasicGeoposition()
    {
        Latitude = 37.4333,
        Longitude = 24.9167
    });
    MapIcon1.NormalizedAnchorPoint = new Point(2.0, 2.0);
    myMap.MapElements.Add(MapIcon1); 
}

The map is loading properly, but the pin won't appear. Any ideas on this? Is there any way to do it without using xaml controls for the pin?

2
You are making map center as geoPoint, but you want pushpin at bGeo . Did you scroll/moved through the map and checked if pushpin is appearing at some place in map? or try setting pin at geoPoint for testing.Abhishek

2 Answers

1
votes

This is a general way of adding any UI on map control in windows phone: We need to create "map layers" and "map overlays" and specify the coordinates where we want to place it. Sample code:

Read the tutorial here

You can add an Image control in the overlay and point its source to the pin image you want to plot. Hope this help

0
votes

You can try..

     BitmapImage myImage1;
     myImage1 = new BitmapImage(new Uri("/Assets/Images/pushpin-google-hi.png", UriKind.RelativeOrAbsolute));
     var image = new Image();
     image.Width = 50;
     image.Height = 50;
     image.Opacity = 100;
     image.Source = myImage1;

     var mapOverlay = new MapOverlay();
     mapOverlay.Content = image;
     mapOverlay.GeoCoordinate = new GeoCoordinate(lats, lons);
     var mapLayer = new MapLayer();
     mapLayer.Add(mapOverlay);
     MyMap.Layers.Add(mapLayer);
     MyMap.SetView(new GeoCoordinate(lats, lons), 16);