我正在为Windows Phone编写应用程序而我正在使用MapControl。 我希望能够以不同的颜色描绘美国各州。 例如,红色的CA,蓝色的NV等
我想过做Shapes和Polilines,但是我找不到在形状中使用的坐标来获得不同的状态。
我也尝试过使用
var found = await MapLocationFinder.FindLocationsAsync("California", new Geopoint(new BasicGeoposition()));
但它并不适合寻找国家。
答案 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的状态