Плагин Google Планета Земля Нажмите События на 3D-зданиях - PullRequest
4 голосов
/ 12 августа 2011

Я искал вокруг и еще не нашел ответа на это.Можно ли добавить события щелчка в слой 3D-здания или в пользовательские 3D-модели, используя JavaScript для плагина Google Планета Земля.

Моя конечная цель состоит в том, чтобы пользователь мог выбрать 3D-здание и получить информациюпузырь появляется с деталями об этом здании.Это скорее пузырь по умолчанию, который Google показывает с информацией о 3D-модели.

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

Я использую API карт Google V3 с утилитой Google Earth Earth для активации плагина.

Заранее спасибо за любые ответы.

1 Ответ

0 голосов
/ 17 августа 2011

Я думаю, что переоценил это в первый раз.После более внимательного изучения выясняется, что это все еще невозможно (таким простым способом)

google.earth.addEventListener(placemark, 'click', function(event) 
{ 
  alert('click');
});

... События мыши могут быть присоединены к большинству геометрий в плагине (исключениеэто 3D-модели), ...

google earth api

Возможно, это возможно сделать с помощью пользовательского пересечения 'listener'

// РЕДАКТИРОВАТЬ:

Может быть, это не история дыры.больше исследований показало, что можно сделать хит-агит по некоторой геометрии.ge interface имеет функцию с именем hitTest(...) api doc

GEHitTestResult GEView.hitTest( float               x,
                                KmlUnitsEnum        xUnits,
                                float               y,
                                KmlUnitsEnum        yUnits,
                                GEHitTestModeEnum   mode     
                               )    

к сожалению, GEHitTestModeEnum подходит только для GEPlugin.HIT_TEST_GLOBE GEPlugin.HIT_TEST_TERRAIN GEPlugin.HIT_TEST_BUILDINGS

, так что вы можете нажать HitTestпротив зданий, но не против пользовательских 3D-моделей ...

немного полезное решение для выбора пользовательских 3D-моделей может быть тем, которое описано в этом выпуске с использованием других «четных» невидимых меток для обнаружениящелкните.

Литт-код за исключением результатов тестирования

// EDIT2:

Решение, которое я использую в моем текущем проекте, звучит так:

создайте ограничивающий прямоугольник с полигонами для каждого «пользовательского 3d-модели получения события щелчка», чтобы полигоны могли получать события щелчка

google.earth.addEventListener(polygonPlacemark, 'click', function(event) {
    alert('placemark bounding box clicked');
});
...