我正在爲我正在編寫的應用程序試驗Google地球插件API。我希望能夠從地圖中刪除地標。我能想到的最簡單的方法是創建一個「刪除」鏈接一個氣球彈出,但我一直無法弄清楚如何做刪除:從氣球內彈出刪除地標
balloon.setContentString(
'Location: ' + event.getLatitude().toString() + ", " +
event.getLongitude().toString() + '<br /> <br />' +
'<a href="#" onclick="ge.getFeatures().removeChild(event.getCurrentTarget())">Delete</a><br /><a href="#" onclick="prompt(\'Enter new name\', \'blah\'\)">Rename</a>');
這導致:
Uncaught TypeError: Object #<MouseEvent> has no method 'getCurrentTarget' earth2.html:1 onclick
(正如你可以看到我也希望能夠重新命名,但想必不會那麼很難搞清楚的時候我已經想通了刪除?)
整個代碼可以在這裏找到:
http://chrishowells.co.uk:81/earth2.html
整個塊:
google.earth.addEventListener(ge.getWindow(), 'mousedown', function(event) {
if (event.getTarget().getType() == 'KmlPlacemark' &&
event.getTarget().getGeometry().getType() == 'KmlPoint') {
// don't show the default popup
//http://code.google.com/apis/ajax/playground/?exp=earth#javascript_in_balloons
event.preventDefault();
var balloon = ge.createHtmlStringBalloon('');
balloon.setFeature(event.getTarget());
//balloon.setMaxWidth(300);
balloon.setContentString(
'Location: ' + event.getLatitude().toString() + ", " +
event.getLongitude().toString() + '<br /> <br />' +
'<a href="#" onclick="ge.getFeatures().removeChild(event.getCurrentTarget())">Delete</a><br /><a href="#" onclick="prompt(\'Enter new name\', \'blah\'\)">Rename</a>');
ge.setBalloon(balloon);
var placemark = event.getTarget();
dragInfo = {
placemark: event.getTarget(),
dragged: false
};
}
});
非常感謝您的幫助:)
感謝您的回覆@Fraser。我也嘗試過,不幸的是它也不起作用:'Uncaught TypeError:Object#'getTarget''沒有方法。這表明在事件中,事件指的是錯誤的事情。如果不花費很長時間通過Google進行研究,閱讀文檔或者只是嘗試(我花了幾個小時完成所有三個),我不會問問題,但很遺憾,我無法解決這個問題。謝謝。 –
chow
啊,是的'事件'是指錨點上的DOM事件,而不是地標上的KML鼠標事件。請參閱我編輯的答案...'getTarget' vs'getCurrentTarget'仍然適用,因爲我首先聲明... – Fraser
非常棒,非常感謝。這工作完美。看起來我需要更深入地瞭解基礎知識(DOM等),然後才能深入JavaScript ......自從學習HTML之後,至少要15年......非常感謝。今天收購了JavaScript權威指南的副本,並將繼續推廣。謝謝。 – chow