windows phone 7 - Rendering bug in Bing Maps MapPolyline on WP7 if zoomed out? -


i'm having trouble mappolyline. somehow renders gps trace incorrectly if zoomed out.

at low mapcontrol.zoomlevel (eg 9) lines/edges still drawn shouldn't. here screenshots demonstrate odd behavior.

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

image description:

  1. the first image zoomed out (zoomlevel = 9) (pay attention blue mappolyline)
  2. second image zoomed in little (the mappolyline still same same -> incorrect)
  3. third image again zoomed in further (however mappolyline looks still similar)
  4. last image: actual gps trace looks like.

so mappolyline drawing gps trace incorrectly if map zoomed out. seems stops scaling @ point , stays same @ lower zoomlevels (9 - 15 == zooming out)

maybe did wrong? can tell me how fix this? workaround?

here simple test app demonstrate odd behavior (this behavior same on device , simulator):

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 actual trace         var loadedtrace = loadcardrive();          var locations = new locationcollection();         foreach (var item in loadedtrace)         {             locations.add(item.location);         }          mappolyline.locations = locations;          // zoom 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 

i not think have done wrong, issue (i believe) there great deal of data in small vicinity. means lots of sharp angles quite high strokethickness melds 1 blob.

a workaround makes more eye pleasing change strokethickness based on zoom level (the more zoomed out lower strokethickness) following :

private void mapcontrol_viewchangeend(object sender, mapeventargs e)     {         if (mapcontrol.zoomlevel > 17)             mappolyline.strokethickness = 6.00;         else             mappolyline.strokethickness = 2.00;     } 

i believe needs looked though.


Comments

Popular posts from this blog

java - SNMP4J General Variable Binding Error -

windows - Python Service Installation - "Could not find PythonClass entry" -

Determine if a XmlNode is empty or null in C#? -