绘制地图在地图控制
问题描述:
我正在为Windows Phone编写应用程序,我正在使用MapControl。 我希望能够用不同的颜色描绘美国国家。 例如,红色的CA,蓝色的NV等绘制地图在地图控制
我想过要做形状和Polilines,但我找不到在形状中使用的坐标来获得不同的状态。
我也使用
var found = await MapLocationFinder.FindLocationsAsync("California", new Geopoint(new BasicGeoposition()));
尝试,但它并没有寻找美国合作。
答
最好的办法就是从这个公共资源库
https://github.com/johan/world.geo.json/tree/master/countries/USA
解析JSON和创建MapPolygon对象,并将其添加到地图下载GeoJSON的文件。
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
的状态,如果你能找到的形状数据对每个国家的,我会用MapPolygon,从而使得各一个,并相应设置颜色。最难的部分是找到形状数据,然后编写代码将其解析为地址列表。 (将它作为MapPolyline添加到MapControl中将是非常简单的部分)。 – user8709