簡體   English   中英

使用XAML Map Control在基於C#VS2013 WPF的OpenStreetMap的地圖上添加熱圖圖層

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM