Изменения в API Карт Google v3 от 10 февраля 2015 года разрушают существующие карты, созданные с помощью plotGoogleMaps в R?
Обновление: 15 апреля 2015: Google попытался сделать последнюю версию API Карт обратной совместимости, чтобы решить эту проблему, но принял решение "не будет исправлено".
Обновление: 11 февраля 2015 года. Поверьте, это проблема, вызванная обновлением экспериментальной версии API Карт Google 3.19 от 10 февраля 2015 года: https://developers.google.com/maps/documentation/javascript/3.exp/reference
Вы связались с владельцем пакета plotGoogleMaps - можете подтвердить, что указание v3.18 действительно генерирует карты, которые работают правильно.
Если проблема с версией v3.19 не была устранена до того, как она станет "релизной" версией, все предыдущие карты, созданные plotGoogleMaps, больше не будут работать правильно.
Исходное сообщение. Этот вопрос предназначен для пользователей пакета plotGoogleMaps в R и для группы поддержки API Карт Google.
Карты, созданные до 10 февраля 2015 года с использованием вышеупомянутого пакета R, ведут себя по-разному, начиная с этого вечера (восточное время). В частности, "информационное окно", которое появляется при нажатии на первый значок карты, затем используется при нажатии на любой другой значок карты.
Воспроизводимый пример кода R взят из учебного пособия Милана Килибарды (здесь: http://cran.r-project.org/web/packages/plotGoogleMaps/vignettes/plotGoogleMaps-tutorial.pdf).
data(meuse)
coordinates(meuse)<-~x+y
# convert to SPDF
proj4string(meuse) <- CRS('+init=epsg:28992')
# adding Coordinate Referent Sys.
# Create web map of Point data
m<-plotGoogleMaps(meuse,filename='myMap1.htm')
Когда вы щелкаете по булавке карты, открывающееся информационное окно становится таким же, как и все остальные булавки карты. Файлы карт Htm, созданные plotGoogleMaps несколько месяцев назад, теперь демонстрируют такое же поведение, поэтому я считаю, что это является результатом изменения службы API Карт Google.
Другим примером в учебнике, который раньше работал, является построение графика SpatialPolygonsDataFrame с использованием следующего кода R:
require(plotGoogleMaps)
require(maptools)
require(RColorBrewer)
nc <- readShapeSpatial(system.file("shapes/sids.shp",package="maptools")[1],
proj4string=CRS("+proj=longlat +datum=NAD27"))
m<-plotGoogleMaps(nc,zcol="NWBIR74",filename='MyMap6.htm',
mapTypeId='TERRAIN',
colPalette= brewer.pal(7,"Reds"), strokeColor="white")
Когда вы нажимаете на многоугольник, информационное поле открывается в верхнем левом углу (оно должно открываться там, где зарегистрирован щелчок), и оно не изменяется при нажатии на другой многоугольник. Кроме того, в прошлом, хотя информационное окно открывалось в верхнем левом углу, оно в конечном итоге перемещалось к точке щелчка после 3 щелчков. На сегодняшний день содержимое информационного поля не меняется.
Такое поведение можно наблюдать, загружая ранее созданную карту Google с помощью plotGoogleMaps, а не только карты, созданные на сегодняшний день.
Я думаю, что вышеупомянутые проблемы вызваны изменением в конце Google (так как ранее созданные карты теперь демонстрируют то же самое поведение). Я проверил это как на Mac с разными браузерами (Safari 7.1.3, Firefox 34.0.5, Chrome 40.0.2214.111), так и на ПК с IE 10.0.9200.17183, и были получены те же результаты.
Я использую R 3.1.2 и последнюю версию plotGoogleMaps.
Если кто-то из команды Google Карт читает это, не могли бы вы проверить, не является ли это причиной вашего обновления, и если да, то когда мы можем ожидать исправления?
Заранее спасибо.
1 ответ
Разработчики Google изменили что-то с помощью API, InfoWindows теперь не работает должным образом с кодом plotGooogleMaps. Эту проблему можно решить двумя способами:
1) Установите новую версию (2.2) пакета от R-forge (РЕКОМЕНДУЕТСЯ, надеюсь, скоро на CRAN)
install.packages("plotGoogleMaps",repos="http://r-forge.r-project.org")
2) Если используется plotGoogleMaps 2.1. Измените ссылку api в функциях, например, если вы используете CRAN-версию, установите аргумент api в версию 3.18.
# Data preparation
# Point data
data(meuse)
coordinates(meuse)<-~x+y
# convert to SPDF
proj4string(meuse) <- CRS('+init=epsg:28992')
# adding Coordinate Referent Sys.
# Create web map of Point data
m<-plotGoogleMaps(meuse , api="https://maps.google.com/maps/api/js?sensor=false&v=3.18")
Проблему с существующими картами, сделанными до 2014/02/10, можно решить, только если вы замените api в своих файлах.html (.htm). Вы должны заменить линию
<script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=false"> </script>
с
<script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=false&v=3.18"</script>
Надеюсь, это поможет.
Новый выпуск, май 2015 г. Этот старый API больше не работает. Таким образом, если вы воспроизводите карты с новой версией, у вас не возникнет проблем, но если вам нужно использовать старые карты, вам следует заменить эти строки:
replace - infowindow.content = WITH infowindow.setContent (
replace - infowindow.position = event.latLng; С - ); infowindow.setPosition (event.latLng);