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"二重引用符に注意してください。

コンストラクターは2 つの数値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 に答える