[Silverlight] BingMap中Zoomlevel 數值與Slider連動(修正Touch Panel會卡卡的問題)
一不小心又得發一篇跟Bing Map有關的,因為這是遇到的Bug..
修正了..就想說紀錄一下 ..
在BingMap中,用Silverlight去操控他的ZoomLevel 很簡單..
而且要去Binding Slider物件的value 也很簡單,至少Google 上面..
可以找得到解決方案…
但是..因為最近專案的關係,有涉及到觸控螢幕,就會發現Slider 在連動上面會卡卡的..
花了一點時間修正…
就想說順便寫一篇好了注意到這東西的人蠻少的..
好險公司有一台觸控螢幕…
物件配置介紹:
利用下面的sldMapZoomController 物件去控制 mainMap的ZoomLevel…
如果對於插入Bing Map有問題可以參考 這篇 (第一次用Silverlight Bing Map 就上手) .
XAML Code 如下:
<UserControl x:Class="ZoomMapMemo.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:my="clr-namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl" mc:Ignorable="d"
d:DesignHeight="650" d:DesignWidth="550">
<Grid x:Name="LayoutRoot" Background="White" VerticalAlignment="Top"
Width="550" Height="650" Loaded="LayoutRoot_Loaded">
<my:Map Name="mainMap" CredentialsProvider="AhkMeJNiD6a8JSGoC2QIHe47XzBhLqzH_y34nDsbv5kIEbBrEZ9WY_hG4x1DZnd-"
VerticalAlignment="Top" Height="585" />
<Slider Height="41" HorizontalAlignment="Center" Margin="74,0,72,0" Name="sldMapZoomController"
VerticalAlignment="Bottom" FontSize="15" Width="404" Maximum="20" Minimum="1" />
</Grid>
</UserControl>
再來就是C# Code 部分…
提示我寫在註解裡面..
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using Microsoft.Maps.MapControl;
namespace ZoomMapMemo
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private int _mapViewLevelControl=1;
public int MapViewLevelControl
{
set
{
//讓_mapViewLevelControl 連動
_mapViewLevelControl = value;
//讓地圖的Zoom連動
mainMap.ZoomLevel = value;
//讓Slider連動
sldMapZoomController.Value = value;
}
get
{
return _mapViewLevelControl;
}
}
private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
{
//重點是下面兩行的Event,讓touch panel 可以也很順暢連動
//有關於使用手指手勢放大縮小時所觸發
mainMap.TouchZoom += mainMap_TouchZoom;
//如果View改變的時候所觸發
mainMap.ViewChangeEnd += mainMap_ViewChangeEnd;
//一般只要做到這下述兩行就可以成功了
mainMap.MouseWheel += mainMap_MouseWheel;
sldMapZoomController.ValueChanged += mapControlSlider_ValueChanged;
}
void mainMap_ViewChangeEnd(object sender, MapEventArgs e)
{
MapViewLevelControl = Convert.ToInt16(mainMap.ZoomLevel);
}
void mapControlSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
MapViewLevelControl = Convert.ToInt16(sldMapZoomController.Value);
}
void mainMap_MouseWheel(object sender, MouseWheelEventArgs e)
{
MapViewLevelControl = Convert.ToInt16(mainMap.ZoomLevel);
}
void mainMap_TouchZoom(object sender, MapTouchZoomEventArgs e)
{
MapViewLevelControl = Convert.ToInt16(mainMap.ZoomLevel);
}
}
}
有關於觸控的部分就在於要多加兩個Event 的處理..
TouchZoom 還有 ViewChangeEnd
這樣對於觸控部分連動就會比較順暢…
範例:
讚一下:
範例下載:
標籤: Bing Map, C#, Silverlight | 0 Comments
[Silverlight] 使用BingMap 和 RouteService 做出路徑規劃
今天這邊是來紀錄一下,如何使用 RouteService 結合BingMap 做出路徑規劃..
此範例設計為 從台灣台北101 路徑規劃到 台灣花蓮七星潭(那是一個很美的地方,有飛機跟海浪的美好回憶)..
首先我們得擺一張Bing Map 地圖進去,如果不太會擺Bing Map Control 進去 Silverlight 中可以參考 這篇(第一次在Silverlight 使用 Bing Map 就上手)
下面是XMAL Code :
標籤: Bing Map, C#, Silverlight | 0 Comments
[Silverlight] Bing Map 超簡單版搜尋
這篇文章,是做很簡單的搜尋..
不包含Business 或是 Geocode 的搜尋..
因為重點是簡單快速可使用為主..
首先在XMAL 中加入Map 及兩個MapLayer 以及搜尋和輸入地名的Textbox
標籤: Bing Map, C#, Silverlight | 0 Comments
[Silverlight] Bing Map 加入標記點(pushpin)
今天寫一下怎麼在Silverlight 的Bing map 中加入.. 標記點..
其實如果從XAML 中很簡單 ..
只需要在map 中加入 <m:Pushpin Location="緯度,經度" />
即可 ..
<m:Map x:Name="myMap" CredentialsProvider="AhkMeJNiD6a8JSGoC2QIHe47XzBhLqzH_y34nDsbv5kIEbBrEZ9WY_hG4x1DZnd-" Mode="Road" LogoVisibility="Collapsed" >
<m:Pushpin Location="25.02,121.56" />
</m:Map>
標籤: Bing Map, C#, Silverlight | 0 Comments
第一次在Silverlight 使用 Bing Map 就上手
最近因為專案的關係所以不得不接觸有關於Map的東西,
但是其實在Silverlight去使用Google Map 有一定的麻煩...
這時候我研究一下,我發現微軟的Bing Map 對Silverlight的支援度非常的高..
所以可以所以可以讓Developer來輕鬆使用。
接下來我會教如何把Bing Map放進Silverlight中 ..
標籤: 教學, Bing Map, Silverlight | 2 Comments