Ошибка рендеринга в Bing Maps MapPolyline на WP7, если уменьшено? - PullRequest
3 голосов
/ 25 января 2011

У меня проблемы с MapPolyline. Он каким-то образом неправильно отображает трассировку GPS, если его уменьшить.

При низком mapControl.ZoomLevel (например, 9) некоторые линии / края все еще нарисованы, но они не должны. Вот несколько скриншотов, демонстрирующих странное поведение.

http://img403.imageshack.us/g/capture4jz.png/

Описание изображения:

  1. Первое изображение уменьшено (ZoomLevel = 9) (обратите внимание на синий MapPolyline)
  2. Второе изображение немного увеличено (MapPolyline все тот же -> неверно)
  3. Третье изображение снова увеличено (однако MapPolyline выглядит очень похожим)
  4. Последнее изображение: так выглядит фактическая трассировка GPS.

Таким образом, MapPolyline отображает трассировку GPS неправильно, если карта уменьшена. Кажется, что в какой-то момент он перестает масштабироваться и все равно остается на нижних уровнях ZoomLevels (9 - 15 == уменьшение)

Может, я что-то не так сделал? Может кто-нибудь сказать мне, как это исправить? Какой-то обходной путь?

Вот простое тестовое приложение, демонстрирующее это странное поведение (такое же поведение на устройстве и на симуляторе):

MainPage.xaml

    <!--ContentPanel - place additional content here-->
    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0" >
        <my:Map x:Name="mapControl" Margin="8" CredentialsProvider="{Binding CredentialsProvider}">
            <my:MapLayer>
                <my:MapPolyline x:Name="mapPolyline" 
                                Stroke="#FF2C76B7"
           Opacity="0.85"
        StrokeThickness="6" />
            </my:MapLayer>
        </my:Map>
        <Button Content="+" HorizontalAlignment="Left"  Height="86" VerticalAlignment="Bottom" Margin="108,0,0,51" Width="95" Name="zoomInButton"  Click="zoomInButton_Click" />
        <Button Content="-" HorizontalAlignment="Right" Height="86" VerticalAlignment="Bottom" Margin="0,0,101,51" Width="98" Name="zoomOutButton" Click="zoomOutButton_Click" />
    </Grid>

MainPage.xaml.cs

    // Constructor
    public MainPage()
    {
        InitializeComponent();

        this.DataContext = this;

        // load an actual trace
        var loadedTrace = LoadCarDrive();

        var locations = new LocationCollection();
        foreach (var item in loadedTrace)
        {
            locations.Add(item.Location);
        }

        mapPolyline.Locations = locations;

        // zoom to center
        mapControl.SetView(LocationRect.CreateLocationRect(locations));
        mapControl.ZoomLevel = 9;
    }

    private void zoomInButton_Click(object sender, RoutedEventArgs e)
    {
        mapControl.ZoomLevel += 1;
        Debug.WriteLine(mapControl.ZoomLevel);
    }

    private void zoomOutButton_Click(object sender, RoutedEventArgs e)
    {
        mapControl.ZoomLevel -= 1;
        Debug.WriteLine(mapControl.ZoomLevel);
    }

    #region Car Drive Trace
    public List<GeoPosition<GeoCoordinate>> LoadCarDrive()
    {
        return new List<GeoPosition<GeoCoordinate>>() {
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315405647110000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24879119, 14.30983157, 264.5, 7, 8, 0, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315405667080000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24881212, 14.30975438, 266.25, 9, 8, 3.08515646975006, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315405686990000, TimeSpan.FromHours(1)), new GeoCoordinate(48.2488539, 14.30977517, 264.450002034505, 9, 8, 2.7708502915673, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315405707010000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24888582, 14.30973458, 264.833329942491, 7, 6, 2.622272942855, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315405727010000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24890673, 14.30970928, 264.027773256655, 7, 6, 2.09121417243467, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315405747020000, TimeSpan.FromHours(1)), new GeoCoordinate(48.2489299, 14.30967342, 263.053696997372, 7, 6, 1.89013767966395, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315405767030000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24893927, 14.30963082, 262.293819348999, 7, 6, 1.66950420129036, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315405787040000, TimeSpan.FromHours(1)), new GeoCoordinate(48.2489513, 14.30961666, 260.815840816629, 7, 6, 1.45526477188896, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315405807090000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24897547, 14.30958534, 260.136549319532, 7, 6, 1.42904734840548, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315405827120000, TimeSpan.FromHours(1)), new GeoCoordinate(48.2490056, 14.30956493, 259.084125976376, 7, 4, 1.48926924922331, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315405847120000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24901793, 14.30954465, 258.240225098636, 7, 4, 1.8838781127322, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315405927280000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24901616, 14.30950247, 257.208112955994, 7, 6, 1.42209719840891, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315405947300000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24902166, 14.30943419, 256.616110650371, 9, 6, 1.37894394353935, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315405967320000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24902592, 14.30939502, 256.30807656996, 12, 6, 1.19195039763596, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315405987320000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24906708, 14.30934571, 256.508064441282, 7, 6, 2.04223380763222, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406007340000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24907986, 14.30932245, 256.405378302576, 7, 6, 2.21050803017023, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406027360000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24908171, 14.30927428, 256.371151650296, 9, 6, 2.11644554209566, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406067370000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24906849, 14.30929253, 256.325514053301, 7, 6, 1.30317650495332, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406107390000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24908503, 14.3092208, 255.065555234533, 9, 8, 1.03139622772203, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406147410000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24912105, 14.30913114, 253.697027164955, 17, 12, 1.28256512364723, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406167450000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24913691, 14.30915501, 253.087527466496, 17, 12, 1.48256704150828, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406207450000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24910669, 14.30913564, 252.394849509312, 26, 12, 1.45368860226716, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406227460000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24905554, 14.30905891, 252.427454922925, 14, 12, 1.70982854209585, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406247480000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24904891, 14.30902087, 252.407432776241, 14, 12, 2.32817436513961, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406267490000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24903438, 14.30895531, 252.511633302066, 9, 8, 2.40899029224891, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406307520000, TimeSpan.FromHours(1)), new GeoCoordinate(48.2490193, 14.30891254, 254.10635332493, 9, 8, 1.92159113286849, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406327520000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24899752, 14.30886584, 255.33932684116, 9, 8, 1.38514001477141, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406347530000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24899835, 14.30883893, 256.148560055363, 12, 8, 1.2548486272039, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406387570000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24895525, 14.30878854, 257.595958229831, 9, 6, 1.33167435077218, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406407570000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24894308, 14.30881919, 257.748172761731, 7, 6, 1.3437967879493, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406427590000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24894424, 14.30879602, 258.148045698359, 7, 6, 1.40506752120999, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406447590000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24897013, 14.3087708, 258.73206875102, 7, 6, 1.32722909233662, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406507630000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24899411, 14.30871161, 258.393367414116, 7, 6, 1.19050981731556, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406527630000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24900568, 14.30880985, 259.441816124056, 7, 6, 1.60071978622932, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406587660000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24901868, 14.30875422, 258.645063213896, 7, 6, 1.42179922641885, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406607680000, TimeSpan.FromHours(1)), new GeoCoordinate(48.2490225, 14.3087142, 258.128955710307, 9, 8, 1.6648361142989, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406627690000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24899202, 14.30876327, 258.258006308068, 7, 6, 1.63091850786356, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406647700000, TimeSpan.FromHours(1)), new GeoCoordinate(48.248999, 14.30873814, 256.795654006125, 7, 6, 1.69687386722371, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406747760000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24898286, 14.30874518, 254.117882702387, 7, 6, 1.19924244305006, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406787770000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24900199, 14.30874282, 252.40450816716, 7, 8, 0, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406807800000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24901148, 14.30871393, 250.174130289849, 7, 12, 0.562022727939566, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406847810000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24902338, 14.30869189, 247.292875416659, 12, 12, 0.674589842740374, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406867820000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24902707, 14.30871843, 246.122333200998, 9, 12, 0.873256080158558, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406907840000, TimeSpan.FromHours(1)), new GeoCoordinate(48.2490188, 14.30875003, 245.538406941563, 9, 12, 0.82098105319536, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406967870000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24903988, 14.30876066, 246.520244679682, 14, 12, 0.75138387232891, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315406987880000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24901843, 14.30869998, 247.552885908253, 14, 12, 1.28196277976357, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407007890000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24901495, 14.30869837, 247.82437482814, 12, 12, 1.07140934525889, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407067930000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24893342, 14.30866289, 245.792420245464, 9, 8, 1.48298498088654, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407087940000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24894735, 14.30866824, 243.872265024535, 9, 8, 0.870070550784878, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407107950000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24895537, 14.3086449, 241.021559722161, 9, 12, 1.11347094540375, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407147970000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24895027, 14.30862412, 238.031278984576, 12, 8, 0.773571842819805, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407167980000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24894213, 14.30857577, 235.850946235579, 14, 12, 1.12116766217648, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407188000000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24895591, 14.30851958, 233.260739705546, 19, 12, 1.27163333307808, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407208000000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24895305, 14.30858254, 230.737230681547, 12, 8, 1.90409780733048, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407228010000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24896214, 14.3085505, 228.832656795698, 14, 8, 1.72105403937988, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407248030000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24891651, 14.30852579, 227.723297860253, 12, 12, 2.15635087285783, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407268030000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24888497, 14.30851276, 226.018651551984, 14, 12, 1.91486801065635, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407308050000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24889868, 14.3084777, 224.780651838584, 17, 12, 1.7239841715139, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407328060000, TimeSpan.FromHours(1)), new GeoCoordinate(48.2489161, 14.3084672, 223.699763727846, 19, 12, 1.19438627085672, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407348070000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24892424, 14.30845455, 222.860140556649, 14, 8, 0.846422498991796, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407388110000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24897215, 14.30844792, 223.319966060326, 14, 8, 1.20716161411786, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407428130000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24897508, 14.30842744, 224.160031469981, 19, 12, 0.932657766636434, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407448150000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24899233, 14.30847249, 225.093328441092, 14, 12, 1.13484005811991, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407488210000, TimeSpan.FromHours(1)), new GeoCoordinate(48.2489731, 14.30852733, 226.251119970358, 14, 12, 1.0108183931221, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407508180000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24895873, 14.3085864, 226.881478734806, 12, 8, 1.4631129974199, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407528190000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24897776, 14.30857073, 227.710866235055, 12, 8, 1.83969601940619, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407548210000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24895268, 14.30856623, 228.097452392297, 14, 8, 1.80248844193688, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407568210000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24899134, 14.30857573, 228.902770841279, 9, 8, 1.87871250563877, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407588220000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24896963, 14.30857888, 229.666741077859, 12, 8, 1.57348661211614, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407608230000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24897652, 14.30861496, 230.789833237369, 14, 8, 1.44588983852298, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407648250000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24896462, 14.30855057, 232.685526806248, 12, 12, 1.62641254715026, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407668260000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24897762, 14.30855976, 233.658453347872, 14, 12, 1.30362718600298, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407708280000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24897772, 14.30853848, 235.647995419212, 7, 8, 1.09568972753188, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315407908300000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24897772, 14.30853848, 235.647995419212, 7, 8, 0, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412290810000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24900281, 14.30853533, 238.398661578303, 7, 6, 0, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412330830000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24916174, 14.30887975, 240.382221033677, 9, 8, 2.0845116247323, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412370850000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24932241, 14.30944236, 242.993631606337, 9, 8, 5.21982023106023, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412390860000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24939839, 14.30973055, 244.458617546671, 7, 6, 8.64711029733088, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412410870000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24949181, 14.31003057, 246.884087120013, 7, 8, 10.8538398691813, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412430880000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24959673, 14.31033509, 248.180905624572, 9, 8, 11.8312, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412450890000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24965238, 14.31066123, 249.088334983872, 7, 8, 12.6028, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412470900000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24978463, 14.3109267, 249.723078168309, 9, 8, 12.5685068628947, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412490910000, TimeSpan.FromHours(1)), new GeoCoordinate(48.24994331, 14.3111727, 249.970473085232, 9, 8, 12.4484800654093, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412510920000, TimeSpan.FromHours(1)), new GeoCoordinate(48.25010288, 14.3112952, 249.897850417847, 9, 6, 11.608293464152, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412550940000, TimeSpan.FromHours(1)), new GeoCoordinate(48.2504877, 14.31153935, 251.089439133188, 7, 6, 10.8881333333333, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412570950000, TimeSpan.FromHours(1)), new GeoCoordinate(48.25063711, 14.31161383, 251.629094482507, 7, 6, 9.91077352956136, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412590960000, TimeSpan.FromHours(1)), new GeoCoordinate(48.25077697, 14.31164086, 251.939513239737, 9, 8, 9.08773349685669, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412610970000, TimeSpan.FromHours(1)), new GeoCoordinate(48.25089215, 14.31165132, 251.956198505071, 12, 8, 7.79596221612368, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412630980000, TimeSpan.FromHours(1)), new GeoCoordinate(48.25094566, 14.31162197, 252.531907983946, 7, 6, 5.73086814976673, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412650990000, TimeSpan.FromHours(1)), new GeoCoordinate(48.25097386, 14.31163463, 252.696037530844, 7, 6, 3.77117962934291, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412671000000, TimeSpan.FromHours(1)), new GeoCoordinate(48.2510034, 14.31162491, 253.075981838263, 9, 6, 2.64702266191533, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412691010000, TimeSpan.FromHours(1)), new GeoCoordinate(48.25102581, 14.31159456, 252.590673123036, 9, 6, 1.97770819383125, 0)),
         new GeoPosition<GeoCoordinate>(new DateTimeOffset(634315412731030000, TimeSpan.FromHours(1)), new GeoCoordinate(48.25103794, 14.31161438, 252.78888905611, 9, 6, 1.61398873787711, 0)),
     };
    }
    #endregion

Ответы [ 2 ]

3 голосов
/ 26 января 2011

Я не думаю, что вы сделали что-то не так, проблема в том (я считаю), что в небольшом районе очень много данных. Это означает множество острых углов, которые при достаточно высоком значении StrokeThickness объединяются в один шарик.

Обходной путь, который делает это немного более приятным для глаз, состоит в том, чтобы изменить StrokeThickness на основе уровня масштабирования (чем меньше масштаб, тем ниже StrokeThickness) примерно так:

private void mapControl_ViewChangeEnd(object sender, MapEventArgs e)
    {
        if (mapControl.ZoomLevel > 17)
            mapPolyline.StrokeThickness = 6.00;
        else
            mapPolyline.StrokeThickness = 2.00;
    }

Я верю, что это то, что нужно рассмотреть, хотя.

1 голос
/ 15 мая 2011

На самом деле я скорее думаю, что проблема не в Microsoft, а в неправильном использовании инструментов. Это нормальная профессиональная практика, когда данные уменьшаются при уменьшении масштаба. Например, веб-продукт моей компании для отслеживания флота может показывать действия транспортного средства.

В течение 48 часов, если вы уменьшите масштаб до национального уровня, вы увидите около десяти тысяч образцов местоположения. Это нелепое количество данных для отправки клиенту, тем более что точки будут размыты друг с другом на десять пикселей.

Таким образом, мы группируем их с порогом близости, который является функцией масштаба карты. Это дает нам точки около десяти пикселей друг от друга в разумных числах, с устранением дополнительного шума. Не забывайте кластеризоваться, используя близость во времени и в пространстве, в противном случае вы можете получить неправильную группировку по маршрутам туда и обратно.

...