Winrt xaml 在mapControl中绘制状态
我正在为windows Phone编写一个应用程序,我正在使用MapControl。 我希望能够用不同的颜色来描绘美国各州。 例如,红色的CA、蓝色的NV等 我想做一些形状和线条,但是我找不到在形状中使用的坐标来获得不同的状态 我还试着使用Winrt xaml 在mapControl中绘制状态,winrt-xaml,Winrt Xaml,我正在为windows Phone编写一个应用程序,我正在使用MapControl。 我希望能够用不同的颜色来描绘美国各州。 例如,红色的CA、蓝色的NV等 我想做一些形状和线条,但是我找不到在形状中使用的坐标来获得不同的状态 我还试着使用 var found = await MapLocationFinder.FindLocationsAsync("California", new Geopoint(new BasicGeoposition())); 但是它不适用于查找状态。最好的方法是从这
var found = await MapLocationFinder.FindLocationsAsync("California", new Geopoint(new BasicGeoposition()));
但是它不适用于查找状态。最好的方法是从这个公共存储库下载GeoJSON文件 解析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);
}
public异步void RenderState(){
HttpClient=新的HttpClient();
HttpResponseMessage response=wait client.GetAsync(新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[“特征”][0][“几何体”];
JArray坐标=(JArray)多边形[“坐标”][0];
MapPolygon polygon=新建MapPolygon();
列表点=新列表();
foreach(JArray arr in coords){
Add(新的基本地理位置(){纬度=(双精度)arr[1],经度=(双精度)arr[0]});
}
//删除最后一点,因为它是重复的
如果(点数>1){
points.RemoveAt(points.Count-1);
}
多边形路径=新的地质路径(点);
polygon.StrokeColor=Colors.Red;
polygon.FillColor=Colors.Blue;
this.mMap.mapements.Add(多边形);
}
此代码将渲染colarado的状态如果您能够找到每个状态的形状数据,我将使用MapPolygon渲染每个状态并相应地设置颜色。其中最困难的部分是找到形状数据,然后编写代码将其解析为地质点列表。(将其作为MapPolyline添加到MapControl将是最简单的部分)。