将一个占位符的经度和纬度存储到数组中

Store the longtitude and the latitude of a placemark into array

本文关键字:纬度 存储 数组 经度 占位符 一个      更新时间:2023-09-26

因此,我正在使用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()

你知道我怎样才能正确地得到纬度和lng吗?提前谢谢。

正如其他人所说,getGeometry是一个方法,需要括号()才能执行。

此外,在代码中,您可以只使用building.latbuilding.lng,因为这些属性最初用于设置占位符的几何图形。

实际上,调用更多的方法,getGeometry().getLatitude(),以获得您已经拥有的值是毫无意义的。

那个人在大楼里,不是吗?

例如

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

尝试

PASSENGERS[i].lat=占位符.getGeometry().getLatitude();

PASSENGERS[i].lng=占位符.getGeometry().getLongtitude();