在mapControl中绘制状态

时间:2015-05-09 05:58:10

标签: winrt-xaml

我正在为Windows Phone编写应用程序而我正在使用MapControl。 我希望能够以不同的颜色描绘美国各州。 例如,红色的CA,蓝色的NV等

我想过做Shapes和Polilines,但是我找不到在形状中使用的坐标来获得不同的状态。

我也尝试过使用

var found = await MapLocationFinder.FindLocationsAsync("California", new Geopoint(new BasicGeoposition()));

但它并不适合寻找国家。

1 个答案:

答案 0 :(得分:0)

最好的方法是从此公共存储库下载GeoJSON文件

https://github.com/johan/world.geo.json/tree/master/countries/USA

解析JSON并创建MapPolygon对象并将其添加到map。

 public async void RenderState() {
        HttpClient client = new HttpClient();
        HttpResponseMessage response=await client.GetAsync(new Uri("https://raw.githubusercontent.com/johan/world.geo.json/master/countries/USA/CO.geo.json"));
        string json=response.Content.ToString();
        JObject obj = JObject.Parse(json);
        JObject poly = (JObject)obj["features"][0]["geometry"];
        JArray coords = (JArray)poly["coordinates"][0];
        MapPolygon polygon = new MapPolygon();
        List<BasicGeoposition> points = new List<BasicGeoposition>();
        foreach (JArray arr in coords) {
            points.Add(new BasicGeoposition() { Latitude = (double)arr[1], Longitude = (double)arr[0] });
        }

        //Remove last point as it is a duplicate
        if (points.Count > 1) {
            points.RemoveAt(points.Count - 1);
        }
        polygon.Path = new Geopath(points);
        polygon.StrokeColor = Colors.Red;
        polygon.FillColor = Colors.Blue;
        this.mMap.MapElements.Add(polygon);


    }

此代码将呈现colarado的状态