Ich habe mit der Google Earth-API gespielt. Ich dachte, es wäre nett, einige Linien zwischen Orten aus einem relativen 3D-Blickwinkel zu zeichnen. Ich habe die GE-Dokumentation durchsucht und auf Google nach Antworten gesucht, aber nichts gefunden, was mich auf den richtigen Weg geführt hat. Daher dachte ich, ich würde etwas Code posten und vielleicht einen Einblick bekommen.Google Earth API - Zeichnen von Linien, die kurven?
Der folgende Code zeichnet zwei Stellen und zeichnet dann eine Linie zwischen diesen Stellen. Leider spleißt die Linie, die gezogen wird, die Erde. Gibt es eine Methode, um es in die Kontur der Erde zu wickeln, wenn es so in 3D gezeichnet wird? Ich habe versucht, die Platzierung der Zeilenhöhe mit unterschiedlichem Erfolg zu variieren, aber auf Kosten der Genauigkeit und der allgemeinen optischen Wirkung, wenn die Linie die Orte nicht zu verbinden scheint.
function init() {
google.earth.createInstance('map3d', initCB, failureCB);
}
function initCB(instance) {
ge = instance;
ge.getWindow().setVisibility(true);
//---------------------------------PLACES
// Create the placemark.
var placemark = ge.createPlacemark('');
placemark.setName("Location 1");
// Set the placemark's location.
var point = ge.createPoint('');
point.setLatitude(39.96028);
point.setLongitude(-82.979736);
placemark.setGeometry(point);
// Add the placemark to Earth.
ge.getFeatures().appendChild(placemark);
// Create the placemark.
var placemark2 = ge.createPlacemark('');
placemark2.setName("Hop #2");
// Set the placemark's location.
var point2 = ge.createPoint('');
point2.setLatitude(25.7615);
point2.setLongitude(-80.2939);
placemark2.setGeometry(point2);
// Add the placemark to Earth.
ge.getFeatures().appendChild(placemark2);
//---------------------------------FOCUS
var lookAt = ge.createLookAt('');
lookAt.setLatitude(39.96028);
lookAt.setLongitude(-82.979736);
lookAt.setRange(1000000.0);
lookAt.setAltitude(0);
lookAt.setTilt(45);
ge.getView().setAbstractView(lookAt);
//---------------------------------LINES
// Create the placemark
var lineStringPlacemark = ge.createPlacemark('');
// Create the LineString
var lineString = ge.createLineString('');
lineStringPlacemark.setGeometry(lineString);
// Add LineString points
lineString.getCoordinates().pushLatLngAlt(39.96028, -82.979736, 0);
lineString.getCoordinates().pushLatLngAlt(25.7615, -80.2939, 0);
//lineString.setAltitudeMode(ge.ALTITUDE_CLAMP_TO_GROUND);
//lineString.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND);
lineString.setAltitudeMode(ge.absolute);
// Create a style and set width and color of line
lineStringPlacemark.setStyleSelector(ge.createStyle(''));
var lineStyle = lineStringPlacemark.getStyleSelector().getLineStyle();
lineStyle.setWidth(2);
lineStyle.getColor().set('9900ffff'); // aabbggrr format
// Add the feature to Earth
ge.getFeatures().appendChild(lineStringPlacemark);
}
function failureCB(errorCode) {
}
google.setOnLoadCallback(init);
Genial, was ich suchte. Vielen Dank für das Aufzeigen, was ich in der Dokumentation deutlich übersehen habe. – TonyStark