Search code examples
windows-phonepushpin

How to show multiple Pushpins Windows Phone 8


Someone pls fix this code for me. I cant show multiple pushpins :( Or give me some link about show pushpins. Ty :)

// Creat point
        GeoCoordinate p1 = new GeoCoordinate(21.0178, 105.8303);
        GeoCoordinate p2 = new GeoCoordinate(21.0076, 105.8414);
        // Show center map
        this.myPushpins.Center = p1;
        this.myPushpins.ZoomLevel = 13;
        // Creat Pushpins
        Pushpin pp = new Pushpin();
        // Creat MapOverLap
        MapOverlay overlay1 = new MapOverlay();
        overlay1.Content = pp;
        overlay1.GeoCoordinate = new GeoCoordinate(21.0178, 105.8303);
        MapOverlay overlay2 = new MapOverlay();
        overlay2.Content = pp;
        overlay2.GeoCoordinate = new GeoCoordinate(21.0076, 105.8414);
        // Creat Maplayer
        MapLayer layer = new MapLayer();
        layer.Add(overlay1);
        layer.Add(overlay2);
        myPushpins.Layers.Add(layer);

Solution

  • You are setting the content of both overylay1 and overylay2 to the same Pushpin object instance. You need to have two different instances of Pushpin. Try this code:

        // Creat point
        GeoCoordinate p1 = new GeoCoordinate(21.0178, 105.8303);
        GeoCoordinate p2 = new GeoCoordinate(21.0076, 105.8414);
        // Show center map
        this.myPushpins.Center = p1;
        this.myPushpins.ZoomLevel = 13;
        // Creat Pushpins
        //Pushpin pp = new Pushpin();
        // Creat MapOverLap
        MapOverlay overlay1 = new MapOverlay();
        overlay1.Content = new Pushpin();
        overlay1.GeoCoordinate = new GeoCoordinate(21.0178, 105.8303);
        MapOverlay overlay2 = new MapOverlay();
        overlay2.Content = new Pushpin();
        overlay2.GeoCoordinate = new GeoCoordinate(21.0076, 105.8414);
        // Creat Maplayer
        MapLayer layer = new MapLayer();
        layer.Add(overlay1);
        layer.Add(overlay2);
        myPushpins.Layers.Add(layer);
    

    Or even better to have some function to display your pins

    public void PinMap(Map map, GeoCoordinate geoPosition) {
        map.Center = geoPosition;
        map.ZoomLevel = 13;
    
        var mapOverlay = new MapOverlay();
        mapOverlay.Content = new Pushpin();
        mapOverlay.GeoCoordinate = geoPosition;
    
        var mapLayer = new MapLayer();
        mapLayer.Add(mapOverlay);
    
        map.Layers.Add(mapLayer);
    }
    
    PinMap(myMap, new GeoCoordinate(21.0178, 105.8303));
    PinMap(myMap, new GeoCoordinate(21.0076, 105.8414));