tag:blogger.com,1999:blog-4741970181714760187.post4267963185452357632..comments2024-03-14T19:47:05.494+00:00Comments on master maps: The polygon hole problem in Google EarthBjørn Sandvikhttp://www.blogger.com/profile/09449118212462364491noreply@blogger.comBlogger3125tag:blogger.com,1999:blog-4741970181714760187.post-49117280017087584892011-11-08T17:12:30.641+00:002011-11-08T17:12:30.641+00:00I tried a workaround setting the property to &quo...I tried a workaround setting the property to "clampToGround" for all those polygons having a value less than 10% of the maximum value.<br /><br />see code<br /><br /> earth.getWindow().setVisibility(true);<br /> <br /> var data = new google.visualization.DataTable(jsonData);<br /> <br /> var options = {<br /> type: 'prism',// 'choropleth',//<br /> title: 'Call patterns',<br /> maxHeight: 600000,<br /> colorType: 'scale',<br /> classification: 'equal',<br /> geometry: worldBorders<br /> };<br /> <br /> <br /> var kml = map.draw(data, options);<br /><br /> kml = ''+kml;<br /> kml = kml.replace('\\\\\\','');<br /> <br /> if (window.DOMParser)<br /> {<br /> parser=new DOMParser();<br /> xmlDoc=parser.parseFromString(kml,"text/xml");<br /> }<br /> else // Internet Explorer<br /> {<br /> xmlDoc=new ActiveXObject("Microsoft.XMLDOM");<br /> xmlDoc.async="false";<br /> xmlDoc.loadXML(kml);<br /> } <br /> <br /> var root = xmlDoc.documentElement;<br /> <br /> var placemarks = root.getElementsByTagName('Placemark');<br /><br />// find the maximum value of the entire map <br /> var maxValue = -1;<br /> <br /> for (var i=0; i < placemarks.length; i++) {<br /> <br /> var aPlaceMarkName = placemarks[i].getElementsByTagName('name')[0];<br /> <br /> var myRegexp = /.+\s(\d+,\d+|\d+)/;<br /> var match = myRegexp.exec(aPlaceMarkName.childNodes[0].nodeValue);<br /> <br /> var curValue = parseInt(match[1].replace(',',''));<br /> <br /> if(curValue>maxValue)<br /> maxValue = curValue;<br /> <br /> } <br /> <br /> <br />//change within the kml file, the altitudeMode tag of those elements having value less than 10% of the maximum<br /><br /> for (var i=0; i < placemarks.length; i++) {<br /> <br /> var aPlaceMarkName = placemarks[i].getElementsByTagName('name')[0];<br /> <br /> var myRegexp = /.+\s(\d+,\d+|\d+)/;<br /> var match = myRegexp.exec(aPlaceMarkName.childNodes[0].nodeValue);<br /> <br /> var curValue = parseInt(match[1].replace(',',''));<br /> <br /> if (curValue < (maxValue/10) /*|| curValue<1000*/)<br /> {<br /> var altitudeModeValues = placemarks[i].getElementsByTagName('altitudeMode');<br /> <br /> for (var j=0; j < altitudeModeValues.length; j++) {<br /> <br /> altitudeModeValues[j].childNodes[0].nodeValue = 'clampToGround';<br /> <br /> }<br /> <br /> placemarks[i].getElementsByTagName('tessellate')[0].childNodes[0].nodeValue = 0; <br /> }<br /> }<br /> <br /> if (window.DOMParser)<br /> kmlString = (new XMLSerializer()).serializeToString(xmlDoc);<br /> else<br /> kmlString = xmlDoc.xml;<br /> <br /> //document.write(kmlString);<br /> <br /> <br /> var kmlObject = earth.parseKml(kmlString);Fabrizionoreply@blogger.comtag:blogger.com,1999:blog-4741970181714760187.post-52603933543848168302008-03-15T22:42:00.000+00:002008-03-15T22:42:00.000+00:00Hi,The examples I've provided already have tessela...Hi,<BR/>The examples I've provided already have tesselation enabled. According to the KML 2.2 Reference, tesselation only works when the value of altitudeMode is clampToGround. That is why polygons without an altitude value are displayed properly.Bjørn Sandvikhttps://www.blogger.com/profile/16080335362672606377noreply@blogger.comtag:blogger.com,1999:blog-4741970181714760187.post-41873126244221215182008-03-15T20:47:00.000+00:002008-03-15T20:47:00.000+00:00Are you sure that settling tesslate to true doesn'...Are you sure that settling tesslate to true doesn't solve this problem? I know that it does with lines along the surface.Christopher Schmidthttps://www.blogger.com/profile/17686963835871922877noreply@blogger.com