2014-02-25 28 views
0

我有一個谷歌地圖,從一個名爲.kmz文件標,和「的addListener」事件顯示點擊一個地標時定製標的信息:http://Bus.w.pw/DefaultIconAddListener.html如何「的addListener標點擊」與GeoXML3

<script src=https://Maps.GoogleAPIs.com/maps/api/js?v=3.exp&sensor=false></script> 

<script> 

function I() { 

M = new google.maps.Map(document.getElementById('D'), { 
    center: new google.maps.LatLng(43.31,-0.36), 
    zoom: 14 
}) 

L = new google.maps.KmlLayer({url: 'http://Bus.w.pw/TA.kmz', suppressInfoWindows: true}) 
L.setMap(M) 

google.maps.event.addListener(L, 'click', function(E) { 
    W = new google.maps.InfoWindow({content: 'Customization' + E.featureData.description, position: new google.maps.LatLng(E.latLng.lat(),E.latLng.lng())}) 
    W.open(M) 
}) 

} 

google.maps.event.addDomListener(window, 'load', I) 

</script> 

<div id=D style='width:90%;height:90%'> 


但我想標有一個自定義圖標而不是默認的谷歌圖標。

爲了得到這樣的結果,我用GeoXML3:http://Bus.w.pw/CustomIconWithGeoXML.html

<script src=https://Maps.GoogleAPIs.com/maps/api/js?v=3.exp&sensor=false></script> 
<script src=GeoXML3.js></script> 
<script src=ZipFile.complete.js></script> 

<script> 

function I() { 

M = new google.maps.Map(document.getElementById('D'), { 
    center: new google.maps.LatLng(43.31,-0.36), 
    zoom: 14 
}) 

P = new geoXML3.parser({map:M, markerOptions: {icon:'R.png'}, afterParse: S}) 
P.parse('http://Bus.w.pw/TA.kmz') 
} 

function S() { 
    P.showDocument(P.docs[0]) 
} 

google.maps.event.addDomListener(window, 'load', I) 

</script> 

<div id=D style='width:90%;height:90%'> 


現在我的問題是:

如何在同一時間:

  • 爲標

  • 和一個「的addListener」事件自定義圖標,以便顯示一個定製信息窗口取決於在其上已經點擊了標

+0

哪裏自定義文本信息窗口來自(或者如果它來自KML,你想如何定製它)? – geocodezip

+0

它來自KMZ:我想通過僅使用KMZ中包含的文本的某些部分(使用javascript「substr」函數)來自定義InfoWindow。 –

+0

您可能需要抑制geoxml3中的infowindows,並將您自己的偵聽器函數添加到標記或編寫自定義的createMarker函數。 – geocodezip

回答

0
  1. 收益從您的createMarker功能
  2. 使用有效的HTML
  3. 抑制現有的信息窗口,幷包括一個全球性的信息窗口(除非你喜歡能夠有多個信息窗口同時打開,我不標記「T)。
  4. 您可以更多地自定義標記,將其置於地理位置,默認情況下,v3 API會將圖像的底部中心放在該位置。
  5. 設置你的地標知名度的KML爲 '1':

    <visibility>1</visibility> 
    

代碼:

<html> 
<head> 
<title>Custom CreateMarker</title> 

<script src=https://maps.googleapis.com/maps/api/js?v=3&sensor=false></script> 
<script type="text/javascript" src="http://geoxml3.googlecode.com/svn/branches/kmz/ZipFile.complete.js"></script> 
<script type="text/javascript" src="http://geoxml3.googlecode.com/svn/branches/kmz/geoxml3.js"></script> 
<script type="text/javascript" src="http://geoxml3.googlecode.com/svn/trunk/ProjectedOverlay.js"></script> 
<script type="text/javascript"> 

var infowindow = new google.maps.InfoWindow(); 
var M = null; 
var P = null; 
function I() { 

M = new google.maps.Map(document.getElementById('D'), { 
    center: new google.maps.LatLng(43.31,-0.36), 
    zoom: 14 
}); 

P = new geoXML3.parser({map:M, markerOptions: {icon:{url:'http://bus.w.pw/R.png',size:new google.maps.Size(9,9),anchor:new google.maps.Point(5,5)}}, afterParse: S, createMarke\ 
r: CM, suppressInfoWindows: true}); 
P.parse('SO_20140226_bus_w_pw_TA.kml'); 
} 

function S() { 
P.showDocument(P.docs[0]); 
} 

function CM(placemark) { 
var marker = P.createMarker(placemark); 
google.maps.event.addListener(marker, 'click', function(E) { 
    infowindow.setContent('Description : ' + placemark.description+"<br>"+'Latitude & longitude : ' + E.latLng); 
    infowindow.setPosition(marker.getPosition()); 
    infowindow.open(M /* ,marker */); 
}) 
return marker; 
} 

google.maps.event.addDomListener(window, 'load', I) 

</script> 
</head> 
<body> 
<div id="D" style="width:600px;height:500px"> 
</body> 
</html> 

working example

相關問題