2015-02-11 2 views
0

Обновление: 15 апреля 2015 г.: Google задумался над тем, чтобы последний API Карт был обратно совместим, чтобы исправить эту проблему, но выпустил решение «не исправить».Изменение в API Карт Google v3 10 февраля 2015 г. разбивает существующие карты, созданные с помощью plotGoogleMaps в R?

обновление: 11 февраля 2015: полагают, что это проблема, которая вызвана обновлением к экспериментальной версии Google Maps API 3.19 на 10 февраля 2015 года: https://developers.google.com/maps/documentation/javascript/3.exp/reference

были в контакте с владелец участка plotGoogleMaps - может подтвердить, что указание v3.18 действительно создает карты, которые работают правильно.

Если проблема в v3.19 не исправлена ​​до того, как она станет версией «выпуска», все ранее созданные карты, созданные графикомGoogleMaps больше не будут работать корректно.

Оригинальный пост: Этот вопрос предназначен для пользователей 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 из нескольких месяцев назад, теперь демонстрируют такое же поведение, поэтому я думаю, что это результат изменения службы Google Maps API.

Другой пример в учебник, который используется для работы в заговоре 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 Maps читает это, можете ли вы проверить, вызвало ли это обновление на вашем конце, и если да, когда мы можем ожидать исправления?

Заранее спасибо.

+0

https://code.google.com/p/gmaps-api-issues/issues/list?can=2&q=apitype:Javascript3 – MrUpsidown

+0

Я проинформировал Милан об этом вопросе –

+0

Спасибо @MrUpsidown - Я отправил в Google maps api issues link – Mac471

ответ

3

Разработчики Google что-то изменили с помощью API, InfoWindows теперь не работают должным образом с кодом plotGooogleMaps. Эта проблема может быть решена двумя способами:

1) Установить новую версию (2.2) пакета из R-горна (РЕКОМЕНДУЕТСЯ, я надеюсь, что это будет в ближайшее время на 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 можно решить, только если заменить апи в вашем .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> 

Я надеюсь, что это помогает.

New issue May 2015. Этот старый api больше не работает. Таким образом, если вы воспроизводить карты с новой версией вы не будете иметь проблем, но если вам нужно использовать старые карты вы должны затем заменить эти строки:

Replace - infowindow.content = С infowindow.setContent (

заменить - infowindow.position = event.latLng; С - ); infowindow.setPosition (event.latLng);

+0

Большое спасибо за ваш быстрый ответ! – Mac471

+0

В этом выпуске см. Обсуждение Google [здесь] (https://code.google.com/p/gmaps-api-issues/issues/detail?id=7641). v3.18 собирается выйти на пенсию в середине мая. Как я понимаю, когда это произойдет, оно по умолчанию будет v3.19. Я проверил один из html-файлов, созданных с версией 2.2, и, похоже, он рекомендует использовать infowindow.setContent(), как рекомендует Google. Не могли бы вы подтвердить? Поэтому, когда 3.18 удаляется, это похоже на карты, созданные с версией 2.2 plotGoogleMaps, будут продолжать работать. Вопрос только теперь о всех ранее созданных html-файлах. – Mac471

+0

Не стоит беспокоиться, карты, которые будут работать после середины мая, будут перенаправлять API на новый, и теперь карты теперь работают с новыми, что может быть проблемой для старых карт. В старом необходимо установить infowindow.setContent() вместо infowindow.content или просто воспроизвести старые карты, если у вас есть R-код. –