2015-05-09 129 views
0

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

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

我也使用

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

尝试,但它并没有寻找美国合作。

+0

的状态,如果你能找到的形状数据对每个国家的,我会用MapPolygon,从而使得各一个,并相应设置颜色。最难的部分是找到形状数据,然后编写代码将其解析为地址列表。 (将它作为MapPolyline添加到MapControl中将是非常简单的部分)。 – user8709

回答

0

最好的办法就是从这个公共资源库

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