2013-05-03 121 views
2

我需要幫助更改每個KML圖層的顏色和/或隨機顏色,以下是Google地圖API的腳本。我附上了整個腳本。我想知道如何更改每個多邊形的填充和邊框,並生成隨機顏色。這是一個動態的SQL腳本。任何幫助將不勝感激。謝謝。Google Maps API KML圖層每層更改顏色

enter code here 
<!DOCTYPE html> 
<html> 
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 
function createCookie(name,value,days) { 
if (days) { 
var date = new Date(); 
date.setTime(date.getTime()+(days*24*60*60*1000)); 
var expires = "; expires="+date.toGMTString(); 
} 
else var expires = ""; 
document.cookie = name+"="+value+expires+"; path=/"; 
} 
function readCookie(name) { 
var nameEQ = name + "="; 
var ca = document.cookie.split(';'); 
for(var i=0;i < ca.length;i++) { 
var c = ca[i]; 
while (c.charAt(0)==' ') c = c.substring(1,c.length); 
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
} 
return null; 
} 
function eraseCookie(name) { 
createCookie(name,"",-1); 
} 
function initialize() { 
var soil = new google.maps.LatLng(41.875696,-87.624207); 
var myOptions = { 
zoom: 7, 
center: new google.maps.LatLng(36.4098320, -85.2748718), 
mapTypeId: google.maps.MapTypeId.TERRAIN 
} 
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
layerl0 = new google.maps.FusionTablesLayer({ 
query: { 
select: "'col2'", 
from: '1-nKJJErStEiMLY52mxzBxhjizorvs5ZXDJXu_IA' 
}, 
map: map, 
styleId: 1, 
templateId: 1 
}); 
var 
ctaLayer = new  google.maps.KmlLayer('http://casoilresource.lawr.ucdavis.edu/soil_web/export.php? format=kmz&srid=4326&mukey_query=527031&BBOX=1,1,1,1', {preserveViewport:false});ctaLayer.setMap(map); 
ctaLayer = new google.maps.KmlLayer('http://casoilresource.lawr.ucdavis.edu/soil_web/export.php? format=kmz&srid=4326&mukey_query=527128&BBOX=1,1,1,1', {preserveViewport:false});ctaLayer.setMap(map); 
ctaLayer = new google.maps.KmlLayer('http://casoilresource.lawr.ucdavis.edu/soil_web/export.php? format=kmz&srid=4326&mukey_query=527489&BBOX=1,1,1,1', {preserveViewport:false});ctaLayer.setMap(map); 
ctaLayer = new google.maps.KmlLayer('http://casoilresource.lawr.ucdavis.edu/soil_web/export.php? format=kmz&srid=4326&mukey_query=527504&BBOX=1,1,1,1', {preserveViewport:false});ctaLayer.setMap(map); 
ctaLayer = new google.maps.KmlLayer('http://casoilresource.lawr.ucdavis.edu/soil_web/export.php? format=kmz&srid=4326&mukey_query=527505&BBOX=1,1,1,1', {preserveViewport:false});ctaLayer.setMap(map); 
ctaLayer = new google.maps.KmlLayer('http://casoilresource.lawr.ucdavis.edu/soil_web/export.php? format=kmz&srid=4326&mukey_query=527560&BBOX=1,1,1,1', {preserveViewport:false});ctaLayer.setMap(map); 
ctaLayer = new google.maps.KmlLayer('http://casoilresource.lawr.ucdavis.edu/soil_web/export.php? format=kmz&srid=4326&mukey_query=528148&BBOX=1,1,1,1', {preserveViewport:false});ctaLayer.setMap(map); 
ctaLayer = new google.maps.KmlLayer('http://casoilresource.lawr.ucdavis.edu/soil_web/export.php? format=kmz&srid=4326&mukey_query=529859&BBOX=1,1,1,1', {preserveViewport:false});ctaLayer.setMap(map); 
ctaLayer = new google.maps.KmlLayer('http://casoilresource.lawr.ucdavis.edu/soil_web/export.php? format=kmz&srid=4326&mukey_query=2396878&BBOX=1,1,1,1', {preserveViewport:false});ctaLayer.setMap(map); 
} 
</script> 
</head> 
<body onload="initialize()"> 
<div id="map_canvas" style="width: 600px; height: 450px;"></div> 
</body> 
</html> 
+0

爲什麼這個問題標籤爲「java」? – geocodezip 2013-05-04 00:06:10

回答

3

您無法使用Google Maps API v3更改KmlLayer中多邊形的顏色。您可以更改生成的KML來設置顏色。

KML Reference

example of multiple KML files with geoxml3

example of changing colors (highlighting) with geoxml3

+0

謝謝,但我期待覆蓋圖層的顏色而不是多邊形本身。必須有方法來覆蓋外部KML圖層顏色? – user2348568 2013-05-04 00:32:22

+0

不適用於KmlLayer(至少目前)。如果您將KML導入FusionTables,則可以在FusionTablesLayer中對其進行修改。如果您使用第三方KML解析器(如[geoxml3](http://code.google.com/p/geoxml3/)),將KML呈現爲本機Google Maps API v3對象,則可以修改其屬性,但對於複雜的KML可能會有性能問題。 – geocodezip 2013-05-04 01:11:13

+0

謝謝,它看起來像我必須使用第三方,因爲數據是動態的,對於融合表來說太大了。我如何用geoxml3編寫它? – user2348568 2013-05-04 12:21:11

1

可以使用geoxml3改變KML顏色。這是一個鏈接到.. see this example

+0

它說在鏈接上找不到頁面 – user2348568 2013-05-04 12:22:10

+0

謝謝,我需要一些幫助修改我的腳本上面使用geoxml3。這個例子很好,但不知道如何編寫它。 – user2348568 2013-05-04 13:11:29

+0

有人可以給我一個例子如何添加第三方,謝謝 – user2348568 2014-01-25 23:36:33