3

当我尝试更改位置时,我遇到了一个小问题。我已连接到地图

var mapOptions = {
   zoom: 7,
   center: new google.maps.LatLng(48.379433, 31.165579999999977),
   mapTypeControl: false,
   mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

现在我需要更改地图上的位置

<select onChange="changeCity()" id="city"><option value="50.4501, 30.523400000000038">Київ</option><option value="49.839683, 24.029717000000005">Львів</option></select>

为此,我正在使用:

function changeCity() {
   var city = document.getElementById('city').value;
   var city_1 = new google.maps.LatLng(city);
   map.setCenter(city_1);
}

但什么也没发生(我看到灰色区域)。请帮忙...!

4

2 回答 2

6

问题是

somefunction("xx.xxxxxxx, xx.xxxxxxx");

不等于

somefunction(xx.xxxxxxx, xx.xxxxxxx);

标签中的值option被指定为单个字符串实例,例如"50.4501, 30.523400000000038"Kiev。注意双引号。

构造函数new LatLng()需要两个数值。因此,您必须将值字符串解析为单独的纬度和经度值并将它们传递给new LatLng()构造函数:

function changeCity() {

    var cityString = document.getElementById('city').value;
    //value string is split into two parts by the ',' character
    var arrayOfValues = cityString.split(','); 
    //parse latitude string part to a floating point value (first part)
    var lat = parseFloat(arrayOfValues[0]);
    //parse longitude string part to a floating point value (second part)
    var lon = parseFloat(arrayOfValues[1]);
    //create new LatLng instance with correct values
    var city_1 = new google.maps.LatLng(lat, lon);
    map.setCenter(city_1);
}

参考:

于 2012-11-21T12:29:18.263 回答
0

我可以确认,如果每个数字都作为字符串传递(因此 DOM 提取的字符串需要 parseFloat),则会出现“图像损坏或截断”错误。

于 2014-06-13T10:26:53.743 回答