2014-04-14 45 views
0

因此,我正在使用Google Earth API在網頁上工作,在該網頁上班車在城鎮周圍移動並接送乘客。 PASSENGERS是一組預定義的對象,由於長度的限制,它是一個單獨的JavaScript文件。這裏是我的功能populate其填充3D地圖與標代碼:將地標的經度和緯度存儲到數組中

function populate() 
{ 
// mark houses 
for (var house in HOUSES) 
{ 
    // plant house on map 
    new google.maps.Marker({ 
     icon: "https://google-maps-icons.googlecode.com/files/home.png", 
     map: map, 
     position: new google.maps.LatLng(HOUSES[house].lat, HOUSES[house].lng), 
     title: house 
    }); 
} 

// get current URL, sans any filename 
var url = window.location.href.substring(0, (window.location.href.lastIndexOf("/")) + 1); 

// scatter passengers 
for (var i = 0; i < PASSENGERS.length; i++) 
{ 
    // pick a random building 
    var building = BUILDINGS[Math.floor(Math.random() * BUILDINGS.length)]; 

    // prepare placemark 
    var placemark = earth.createPlacemark(""); 
    placemark.setName(PASSENGERS[i].name + " to " + PASSENGERS[i].house); 

    // prepare icon 
    var icon = earth.createIcon(""); 
    icon.setHref(url + "/img/" + PASSENGERS[i].username + ".jpg"); 

    // prepare style 
    var style = earth.createStyle(""); 
    style.getIconStyle().setIcon(icon); 
    style.getIconStyle().setScale(4.0); 

    // prepare stylemap 
    var styleMap = earth.createStyleMap(""); 
    styleMap.setNormalStyle(style); 
    styleMap.setHighlightStyle(style); 

    // associate stylemap with placemark 
    placemark.setStyleSelector(styleMap); 

    // prepare point 
    var point = earth.createPoint(""); 
    point.setAltitudeMode(earth.ALTITUDE_RELATIVE_TO_GROUND); 
    point.setLatitude(building.lat); 
    point.setLongitude(building.lng); 
    point.setAltitude(0.0); 

    // associate placemark with point 
    placemark.setGeometry(point); 

    // add placemark to Earth 
    earth.getFeatures().appendChild(placemark); 

    // add marker to map 
    var marker = new google.maps.Marker({ 
     icon: "https://maps.gstatic.com/intl/en_us/mapfiles/ms/micons/man.png", 
     map: map, 
     position: new google.maps.LatLng(building.lat, building.lng), 
     title: PASSENGERS[i].name + " at " + building.name 
    }); 

    //remember passenger's placemark and marker for pick-up's sake 
    PASSENGERS[i].lat = placemark.getGeometry.getLatitude(); 
    PASSENGERS[i].lng = placemark.getGeometry.getLongtitude(); 
} 
} 

然而,當我打開我的網頁我從控制檯收到以下錯誤:Uncaught TypeError: undefined is not a function關於代碼的最後兩行:
PASSENGERS[i].lat = placemark.getGeometry.getLatitude(); PASSENGERS[i].lng = placemark.getGeometry.getLongtitude()

任何想法如何我可以正確獲得lat和lng?先謝謝你。 。

+0

你試過把'()''要像getGeometry''placemark.getGeometry()getLatitude();' –

回答

0

正如其他人所說的getGeometry是一種方法,需要括號()來執行。

同樣看着你的代碼,你可以使用building.latbuilding.lng - 因爲這些是首先用於設置地標幾何的屬性。

真的,它是毫無意義的調用更多的方法,getGeometry()。getLatitude(),以獲得您已有的值。

這個人在大樓,不是?

例如

PASSENGERS[i].lat = building.lat; 
PASSENGERS[i].lng = building.lng; 
+0

非常感謝!這很簡單。仍然想知道,雖然這個語法錯了。 – user3484582

0

嘗試

PASSENGERS [I] .lat = placemark.getGeometry()getLatitude();

PASSENGERS [i] .lng = placemark.getGeometry()。getLongtitude();

+0

哦,這是非常愚蠢的,卻忘記了那些!但仍然出現相同的錯誤。 但還有一件事...在PASSENGERS js文件中沒有「lat」和「lng」鍵。我假設它們被這兩行自動添加到每個對象。或者我錯了?問題可能在那裏。 – user3484582