My favorites | Sign in
Project Logo
             
New issue | Search
for
| Advanced search | Search tips
Issue 1119: Major Bug Introduced in 2.149 - Polygons with cut-outs invert at higher zoom levels
1 person starred this issue and may be notified of changes. Back to list
Status:  Fixed
Owner:  ----
Closed:  Mar 2009
Type-Defect
ApiType-Javascript
Internal-1700993
Fixed-2.151
Regression-Yes


Sign in to add a comment
 
Reported by m...@wwarby.com, Mar 09, 2009
A crippling bug seems to have been introduced in 2.149 which has broken my
website. The bug does not appear in you use 2.148 or just "2" as the
version number. A polygon with a cut-out appears to invert so that the
cut-out is filled and the main polygon area isn't, but only when you zoom
in past a certain point. Before that point, it looks normal.

Here is an online demo of the bug:
http://myplace.walthamforest.gov.uk/dev/bug/polygon-fills.htm Try zooming
in and out to see the problem.

What steps will reproduce the problem? Please provide a link to a
demonstration page if at all possible, or attach code.
Recreate this page and test in version 2.x:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Google Maps Polygon Fill Bug</title>
	<script type="text/javascript"
src="http://www.google.co.uk/jsapi?key=YOUR_API_KEY"></script>
    <script type="text/javascript">
		google.load('maps', '2.148');
		function initialize() {
			var map = new GMap2(document.getElementById('map'));
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
			map.addControl(new GScaleControl());
			map.addControl(new GOverviewMapControl());
			map.setCenter(new GLatLng(51.5945922134, -0.0112397488), 15);
			var marker = new GMarker(new GLatLng(51.5945922134, -0.0112397488));
			
			var londonBoundaryPoints =
'kyfyHqah@gZk@_DsGsTaEmJqJwGof@nAoSwKab@__@|S_L@Swi@{Fes@cK^qDhGoN|@qCeEo`@xVrDak@wKMsChU{BL_OwLhCwReHwE_HdC_DkN{FOj@qK|`AkREcu@s@qEqT}AmIiNoFIcBpGsk@FyRqiE}Mn@sA{SeCk@sI{~Bs@yw@lC_D{BkOkJZqTjNg@tMi]~F}KrOd@lQwFP}FlTwGp@sFhS{o@lLnHbmCmi@zS{KAmE~Jg`@xVaz@x|@eg@pKaKiEeMzAyAjl@yJlu@uQqXgIwAyCe\\gEaHcx@|hAgh@j_B_o@tqA`IpKtRj|@`AxWvGbZ|@tU{Cra@tFr`@wDjEUzMfF\\eHx[xGrEvQleAmEjTeD`w@u@pqBLrOvKrf@pWd^`KtYh@fGuHzJnQdk@xGfc@uDrApChSyObLnJbc@nP}N~NnQ~KyA~FhTlA`JsIbMeD|d@nL~g@_Mt{@{]~|@wHnWfA`B_Ju@aGsHe@{UsEkCuD`GnNblAix@|gAgVll@B@iDkBcFqHiAFgGaBqL{GaDpCiBv@iB?aDmAOXy@bJMTyNZcDn@hCdPXzHBxEa@lIc@pEg@|AuBdXAxFk@vNXfQSDAxGWvDWv@aBbBkFrCU]GvARnChDxNaDnBn@dHClCk@vHyDC@^}CaBm@?ARcC{B{@fGGhBFzDh@f@_@hDb@rCAj@hh@tEch@uEyj@kBek@kPuU~NuoAaFcXhD_LhbEgG~h@~F`p@Cd^gD~Yu^`nAqEv]]|bA_JvcAlSfaBWvuA|RdyAcOntAtb@Vfy@jv@pAj[rB{@xTr`@pCrb@fVdTkGda@qPgJR~XgKjDFvTnM_FgC|TxJzL_EvJvB`G~X}QbHlXeEhGdMv`@kCfBnSfg@h@tC}OlMtHz[oAhQ|G`PlLdu@gCjQjDbAxAaGfm@rK~QpL~LxUgB~NuMlQrEzC`@nZvF]t@t[`ThFdAdm@vGtXjHlaAsD`s@eYhkAnMnRjHfi@~Pbg@hZf`@kGnH`Wzx@hIz_AxYli@xPb|@xC|d@rIxYtNlmBmCbl@eOnb@gBpz@gRtvA`Bz^tYlS|Qpr@i[fjA_]vj@a`@viAaWhTqDpb@rO~QpMmOj[zNlIsSxJcH~YlNh_@xFph@uPbGpCk@~P`EbD`d@qLdL~DjYuVzSuDxQs_@t[cD~L_]dG`HbO}GlVzBfGaJvRKzCuIhGItAcUlMmD|OnCxVza@nHtVlVtQ@~Hv[bBzQ~UzZ_^bDbC|Z_M~N|J|d@aB~PdKvQaOtPIpG}XrTwMtHrJnHkAzO|JpKzRtKgFxQzJrGlZnOnJvBxJfA_CnIjIxFeCr`@h[pr@~NrZrYlDsN_DwMhBo[pGmWvRqRq@iI~H}b@Lmz@|OqUlGqiAvDiPvUrDx@bJfT^RcXxc@ApEyKvVbCqJa|@f^|GjAyp@|Wn@lJi`AwBU[aI_GaAaHku@dAiHpDvB|DqXzCjBfByJ`EfAvBuK`TuMnGgRwEgj@tFkk@bO}YrAdCp^{HK`YbX}Ef@w`@zHuA|Bga@kDy_@cQkr@i@m`@`FaVzDq@rQqa@xVuw@reAgpAj@gQqLaj@pTmUdK|M~BkBkDmRjMoKnAvDj`@uN~G_JfUhF`Dhb@vIhOdpAvPz_@jVzNf[dVnNf\\kOddAhJ`NwBxFvHhHkBnF{N{G}p@}n@{uAsp@{Jg_@c]cW{d@eYkJkVs^cE}BoErNs`@cp@sFuU{ScW_Tep@sWcWvCkm@{Fq^DwSvz@aBrUlDhAaZuBuN|Iu\\cBiEzTie@d`@uWpb@_C`A{Inn@gRxi@dmAvh@gv@{Bij@uPcL}L~EwZg`ARuGeV{VbPuz@`Sye@~Z}l@rRaGe@gMjC_FqCkg@lYpEhPiUsCgKlNaLpLr_@`LwC\\}GzSkLtPpAfC{TnVzLF{KrKdSvRcNqAgKfHcUoA}IxCgN}G}K~FoCdAcIeFkW~NoESuJzQySrLmBvf@}e@_Awd@m`@qUb@mUal@_gBcA|JeGpEqAmGtDgIkDcS_K?mJyNoKd@mTcj@kKWiSlQwLia@qIoAcHap@rMeEp@ud@{Qmo@nAqGcFoRyLeGwDaOgTtEiLnL{HiDiFyr@q]oXzF__@oEqf@jAkZzr@io@}VqTKoVz\\uk@m@cMhsAyYaBqVdb@fKdcAqVzo@yPRqX{^qJ}^_Veb@wr@b\\wt@dI}FnOeH~c@dJmGiU^c^`JcTc@yIdQ{NoLexAuBkz@}E{TqUy_@_U`^i\\pQgEgIe\\|FiHkGaXwAgMyPgPoo@mMoUsKmF{Jo[~CqZ}FuD~AsT}K}H]qLcEIiR}UcE~Hw_@rHf@lFqIvBcPaKcIii@|Aek@lFe[_JvCqGsSk@zCgEaDqMmR{l@eTcAdFa[eAae@yYbCgLwFsAeDbJ}MyB}DbEyHmJf@_DoPkCgMjUgb@_DaRvIgI{DoHjLyBiBXgwAaRhRcs@tW_[nf@}BaBtAsU}NeDiFx[sPuK{MU]sPmCeBsLvRiImI{WmAs[uMbMct@_KoKw^aCim@ac@rDyTuEeJNkHsEmH}A}RwHaMqNeFQ{SeQoKc@y^wOa`@{EcBqB`GwNeCiV{l@yc@kDuOpOgMaRaJ|@yHs\\iSyBSgScMeU}Obi@sDlh@';
			var londonBoundaryLevels =
'PFEEHEEHEHDHEEEFHGFDGFFEEEJFHIEEGEEIGFDFEEFFLEFGEEEDEGIIEGEEGEEHDIEFDIFEKEDDGDEEDEFGEHDEBHEEGEFDFEFFHGFFGEEFKEDDHEFFEGHE?ICDBDGBEBEAAEBICAEBABDACBBAGACCFACEECAFCDCBCFBAHCBAFJCEGFELEFDGDDFEHFEGJGHFDEFGGFEFHGEEEGGHEEFBFGEEDEIEEGEIEGEEEFGEDHEHEEFGFEFEFEDJEEEHFFHEEFGFOGGDGEGGEEFEIEFFFGFEEEGEEEJFDEEFFIFEGEFGEFFIEEEFFGEEGEEEFFLEEFEGDEFFDIFEGGFEIGGGHGDEFHEEEEEEEEGEIGEFGHEFGDEHDEEFHEKGFEGEEEIFEGGEEIGEFGEMFHGEEFGEFHEDFGEDKEHDEEFHEFFIJGHFGDFHEFFGDDJGFEGHEEFFGFFGIEDDFFDEHEEFEKFGFGDFDEHEEFGEGEHFFGDDHEGEFHGKEEGGFGEIGGGBJGEFIEGFIEGEEGDLEHEHFFEIEEEEGFEEEIDGEEEGHFDGFEECIFEFFGEEEGDEHFFEFIDIEFHDFGGEFDGGEJGHEEGFDDDFEEFFEIEEGGFFEHFFEIEP';
			
			//Add borough boundary
			var boroughPolygon = new GPolygon.fromEncoded({
				polylines: [{
					color: '#FFFFFF',
					opacity: 1,
					weight: 2,
					points:
'gbyyH|cKwAa@{C_D{DqIyBeGy@sA{C}B{AsDyDsDeCq@sA}@cJoOq@Iq@RaFnDaBt@}DD_Ck@mFiCqIuA{CoDyDw@kDsBuMuRqEgFmO_OwO}JuAqA{@kBsKs_@oAaCiCgCkA_@{APkItGs@V_BA}DiAsSgQkK{OiTgX_MuFgFyEq}@qp@aCgAwBUsAaAcN{Eih@uE@k@c@sC^iDi@g@G{DFiBz@gGbCzB@Sl@?|C`BA_@xDBj@wHBmCo@eH`DoBiDyNSoCFwAT\\jFsC`BcBVw@VwD@yGREYgQj@wN@yFtBeXf@}Ab@qE`@mICyEY{HiCePbDo@xN[LUx@cJNY`DlAhB?hBw@`DqCpLzGfG`BhAGbFpHhDjBg@vAd@HSz@f@TfAm@R~AnB`@bAUbA~Bn@B\\m@pAP\\hAXU`AlA|@Or@lATc@Xn@|AFn@n@x@AXw@^nBz@aAxAlAt@zAd@pAQt@Dj@lAH`@xCbAZXa@b@v@j@ZPfAEn@x@v@z@lCASdAy@n@K`Df@BbBk@`J?~CZzCi@~ATTYnA@bCTbAfIed@tBkI|Zo]nBs@zBl@Pi@pBz@Gl@Vd@hA@bAp@?j@fEdCF_@pAj@Fj@|By@_@pAPPfIpEJa@@Xf@N~ArBr\\zTjGpDhUpAlQbBjBE?SlCOf@]|ALpj@mERI`AoCDmGnA^xBB~A_Ad@`AJCpMsEh@y@jI{CtQR|@XfFnDtAcF~AiBw@kDjNi@E|@o@dBDzAV`@vQgG`BJfAr@bAvBXnBF`RdRl@rJa@zFqAD{BRkB|@mD|@mBvCkErIeKlEmEFNp@g@|BlJ~ExOm@n@d@~AcJfIpEvQ}AbBbEjHdFiFfDbG`@KnAnQd@dDE^OB_Cm@sAL@`Ba@BNXTvFc@FFzA]FvA|XrChPs@b@tC~MdBfNIXiCx@aEVsBz@{A|EJjA|@tDhAdKdAxR`@G?n@cK~@kDvATVOFiEjAaLj[SzDuFjA{BrBqCjEuElNw@hDItDXpCjBfIJvC[fCeBbGi@zEB`Cv@`FBfCIl@}AxCUnAdAfHLtCeA`GDnDIlAgBtCS~C}@`C]Ty@E}BqBmAUq@HaDpCyBnEgC|CkFbJyBpHmAvCcIpEi@zAQfFYdAuCtBwEjHsFxAiJvFyHjCmGhDqB~AoAR',
					levels:
'PBDACBCDCBDGACADFBCDCBGBDCAFADBGBDAEBGDBFDBGBBBEJABBCCAFCBCDCGACEECAFCCAFABBCADBABEACLBEAAEBEBFDBHCDBCEBDDBDDBBDCBBCDCBBCBDDEBCBACCDCCACACBEABDGACACBBBAIBFCICBDBCCBCBCBDEBDCCABCAFBHBBBBBFACFBCCAEBBFDAFCDFHACAFDBFBDFCHEACAEACBBKAFCDFDFEECFAGACBEBCACBBFCCDBFBBBDFAACBBIDBBBFCECECGBDABDBBDBADAADAECADCBHACBEBFBBCADEBBDCFCBBABP',
					zoomFactor: 2,
					numLevels: 18
				}, {
					color: '#FFFFFF',
					opacity: 1,
					weight: 2,
					points: londonBoundaryPoints,
					levels: londonBoundaryLevels,
					zoomFactor: 2,
					numLevels: 18
				}],
				fill: true,
				color: '#666666',
				opacity: 0.2,
				outline: true
			});
			map.addOverlay(boroughPolygon);
			
		}
		google.setOnLoadCallback(initialize);
	</script>
  </head>
  <body>
    <div id="map" style="width: 800px; height: 500px"></div>
  </body>
</html>



What version of the API are you using?
(In the JS API, you can tell this by checking the value of G_API_VERSION.)
2.x (149f)

What operating system and browser are you using?
WinXP, SP3. Tested in Firefox 3.0.7, IE7 and Safari 4. All produce the same
result.


*********************************************************
For developers viewing this issue: please click the 'star' icon to be
notified of future changes, and to let us know how many of you are
interested in seeing it resolved.
*********************************************************
 

Comment 1 by pamela.fox, Mar 09, 2009
(No comment was entered for this change.)
Status: Accepted
Labels: Internal-1700993 Introduced-2.149 Regression-Yes
Comment 2 by m...@wwarby.com, Mar 12, 2009
@Pam: Just a thought, but this polygon crosses the prime meridian (0.0 longitude) in
Greenwich, London. Perhaps that has something to do with the bug?
Comment 3 by pamela.fox, Mar 12, 2009
We've already figured out the bug, actually. It was a combination of slight bugginess 
in our code combined with the fact that your polygon encoding used a  non-standard 
level-of-detail encoding with only one vertex at the top level. 
We'll fix our code to deal with that situation.
Status: FixedNotReleased
Comment 4 by m...@wwarby.com, Mar 12, 2009
@Pam: Thanks for the update. I used the popular online tool
http://facstaff.unca.edu/mcmcclur/GoogleMaps/EncodePolyline/encodeForm.html to encode
this polygon, so I will report to the developer of that tool that it only created a
single vertex at the top level of detail.

Cheers ;)
Comment 5 by pamela.fox, Mar 22, 2009
(No comment was entered for this change.)
Status: Fixed
Labels: -Introduced-2.149 Fixed-2.151
Sign in to add a comment

Hosted by Google Code