Javascript,改变对象价值

时间:2017-03-30 17:11:29

标签: javascript google-maps

这很难解释,所以我只是举个例子。

for(i=1;i<position.length;i++)
        {   
            if(position[i].lat() == position[i-1].lat() && position[i].lng() == position[i-1].lng())
            {

                position[i].lat = position[i].lat() + ((Math.random() -.5) / 1500);
                position[i].lng = position[i].lng() + ((Math.random() -.5) / 1500);
                //position[i].lng = position[i].lng() + ((Math.random() -.5) / 1500);
                //console.log(position[i].lat().value);
            }
        }

基本上我只想改变位置数组中lat和lng的值,但我似乎无法找到解决方案。

 $('#data').find('div[name=postalCode]').each(function(i) {
            var latlng = $(this).find('input[type=hidden]');
            position.push(new google.maps.LatLng(latlng[0].value, latlng[1].value));
            });

这就是位置数组的填充方式。

感谢任何帮助。谢谢 要意识到上面的比较代码没有完全比较,我会把新代码放在这里以防万一有人使用它

for (var i = 0; i < position.length; i++) {
            for(var k = i+1; k<position.length; k++){
        if (position[i].lat() == position[k].lat() && (position[i].lng() == position[k].lng())) {
            console.log("before change" + i + position[i].lat());
           position[i] = new google.maps.LatLng(
        position[i].lat() + ((Math.random() * 1.5) / 100),
        position[i].lng() + ((Math.random() * 1.5) / 100)
        );
        console.log("after change" +i + position[i].lat());
        }
        }
    }

1 个答案:

答案 0 :(得分:1)

https://developers.google.com/maps/documentation/javascript/reference

“请注意,您无法修改LatLng的坐标。如果您想计算另一个点,则必须创建一个新点。”

简而言之,请勿更改值,替换条目

示例:

for (var i = 1; i < position.length; i++) {
    if (position[i].lat() == position[i - 1].lat() && position[i].lng() == position[i - 1].lng()) {
        position[i] = new google.maps.LatLng(
            position[i].lat() + ((Math.random() - .5) / 1500),
            position[i].lng() + ((Math.random() - .5) / 1500)
        );
    }
}