2011-03-13 2 views
1

Я бы попросил некоторую помощь, потому что я боролся с проблемой, возникающей только в IE8 с моим кодом. Вы можете посмотреть демонстрационную страницу, которая иллюстрирует проблему на http://www.europeontrack.com/test.html. Как вы заметили, он отлично работает в Firefox, Chrome, Safari, но в IE8 он вызывает ошибку Javascript «Недопустимый аргумент» в строке openlayers.js 684, символ 178.Неверная ошибка аргумента в IE8 при использовании функций точки вывода с помощью Openlayers в приложении AJAX

Эта страница начинается с инициализации карты openlayers объект и объявить пустой векторный слой cityLayer, который мы будем использовать позже, чтобы нарисовать точки. Ссылка «показать список городов» асинхронно вызывает http://www.europeontrack.com/cityList.html и вставляет ее в DOM. cityList.html объявляет массив, в котором хранятся имена, широты и долготы нескольких городов. Этот массив затем передается в качестве аргумента к showCities() функция, которая объявлена ​​в test.html следующим образом:

function showCities(cities,layer) { 
    var pointFeatures = [] ; 
    for (i = 0 ; i < cities.length ; i++) { 
     pointFeatures[i] = new OpenLayers.Feature.Vector(
      newOpenLayers.Geometry.Point(cities[i]['long'], 
       cities[i]'lat']).transform(
       map.displayProjection,map.baseLayer.projection)); 
     pointFeatures[i].attributes = { label: cities[i]['label'] }; 
    } 
    cityLayer.addFeatures(pointFeatures); 
    return false ; 
} 

В IE8, только первый город, содержащийся в массиве 'городов рисуется, а затем браузер выдает ошибку «Недопустимый аргумент». Вы можете взглянуть на мой исходный код. Кажется, я сбил его до минимума. Я застрял в этой точке, пытаясь устранить эту проблему. Заранее благодарю вас за помощь.

Lothaire

+0

Отличная работа по отображению всего кода загружаемым способом! –

ответ

0

Я смотрел на нее и может воспроизвести ошибку со сборкой общественного ПР. Но используя мою собственную копию OL 2.9.1, она работает в IE и FF.

Я внес небольшие изменения в загружаемые файлы, но только во всплывающем классе, так что это не должно повлиять на ваш код. Попробуйте загрузить OpenLayers 2.9.1 и посмотреть, работает ли ваше приложение с этой версией. Или просто начните с отладочной версии OL (не сжатой) и попробуйте увидеть, какая строка кода вызывает ошибку. Гораздо проще, если не смотреть на сокращенный код. :-)

0

Спасибо, ребята, за то, что заглянули в него - но мне стыдно сказать, что я сделал неосторожную ошибку в определении моей стилистической карты, которая не повлияла на большинство браузеров, кроме IE8, и которая на самом деле была причина проблемы. Все это время я пытался отлаживать, глядя на неправильное место.

Здесь была моя ошибка:

styleMap = new OpenLayers.StyleMap({ 
    'default':{ 
     strokeColor: "#FFFFFF", 
     strokeOpacity: 1, 
     strokeWidth: 2, 
     fillColor: "#852C71", 
     fillOpacity: 1, 
     pointRadius: 4, 
     pointerEvents: "visiblePainted", 
     label : "${label}",     
     fontColor: "#000000", 
     fontSize: "10px", 
     fontFamily: "Verdana", 
     fontWeight: "bold", 
     labelAlign: **"${align}",** 
     labelXOffset: **"${xOffset}",** 
     labelYOffset: "-10" 
    } 
}); 

я определил 2 переменные ($ {выравнивания}, $ {xOffset}) в StyleMap, для которых я не проходил никакого значения при добавлении функции к моему векторного слоя. Это заставило IE сломаться, тогда как другие браузеры игнорировали его. Я заменил эти переменные на фиксированное значение и решил проблему IE8. Извиняюсь за эту глупую ошибку с моей стороны. Спасибо, что посмотрели.

Lothaire

+0

все мы учимся на ошибках :) – igorti

+0

происходит со всеми нами. :-) Отметьте это как ответ, чтобы помочь другим. –

 Смежные вопросы

  • Нет связанных вопросов^_^