[英]show 1 million locations with markers on a map based on OpenStreetMap from C# VS2013 WPF
[英]using XAML Map Control to add a heatmap layer on a map based on OpenStreetMap from C# VS2013 WPF
我正在嘗試使用XAML MAP控件( https://xamlmapcontrol.codeplex.com/ )在基於C#VS2013 WPF的OpenStreetMap的地圖上添加熱圖圖層。
我通過在MainWindow.xaml中設置北,南,東和西緯度/經度,將熱圖圖像添加到地圖中。
但是,我需要將熱圖中的位置顯示在正確的位置(在地圖中具有相同的經度和緯度),因為它們是根據輸入文件創建的,而不僅僅是將圖像粘貼到地圖上。
例如,給定的輸入為:
Logitude, latitude, value
-77.85 42.96 9798
輸入文件中有50萬個位置。
我想將地圖上的位置顯示為熱圖點。 在上面的示例中,該點位於紐約州。 我想在地圖上顯示它,並根據事先指定的圖例中的值分配一些顏色。
另外,由於縮放級別較大(例如15)時,在地圖上顯示50萬個點可能不是一個好視圖。因此,我希望在縮放地圖時,可以將熱圖點合並到不同聚合地理區域中的一個點。 -水平。
例如,如果在一個郵政編碼區域中有5000個點,並且縮放級別> 12,則僅在郵政編碼質心處的一個郵政編碼區域中顯示一個點,或者僅使郵政編碼區域被着色為多邊形,而只有一個顏色。
當縮放級別在8 <level <12時,我只需要以與上面相同的模式顯示縣級點。
當縮放級別為3 <級別<5時,我只需要以與上述相同的模式顯示狀態級別點。
當縮放級別在級別<3時,我只需要以與上述相同的模式顯示美國國家/地區級別的點。
任何幫助,將不勝感激。
您可以使用派生的MapImageLayer並覆蓋其UpdateImage
來動態創建熱圖位圖。 如果創建位圖不需要太多時間,這當然只是一種明智的方法。
public class HeatmapImage : MapImageLayer
{
protected override void UpdateImage(
double west, double east, double south, double north, int width, int height)
{
BitmapSource bitmap = ... // create heatmap here
UpdateImage(west, east, south, north, bitmap);
}
}
然后,您只需將HeatmapImage
添加到地圖,即可完成:
<map:Map TileLayer="{x:Static map:TileLayer.OpenStreetMapTileLayer}">
<local:HeatmapImage />
</map:Map>
請注意,位圖中的地圖圖像必須使用Web Mercator投影創建。
編輯:為了讓您了解MapImage的工作原理,請查看XAML Map Control中的示例應用程序中的以下XAML代碼段。 它將顯示具有給定緯度/經度邊界的圖像作為地圖控件中的疊加層。 實際圖像是從Google地圖復制的航空圖像圖塊:
<map:MapImage South="53.54031" North="53.74871" West="8.08594" East="8.43750"
Source="10_535_330.jpg"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.