Uncaught TypeError: Невозможно прочитать свойство 'x' неопределенного масштабирования пинч на картах Google

google-maps-api-3 gis openlayers-3

517 просмотра

1 ответ

687 Репутация автора

Я использую openlayers 3 с Google Maps. При масштабировании на мобильном телефоне карта перестает работать и выдает исключение: Uncaught TypeError: Cannot read property 'x' of undefined

var googleMapOptions = {
        disableDefaultUI : true,
        keyboardShortcuts : false,
        draggable : false,
        disableDoubleClickZoom : true,
        scrollwheel : false,
        streetViewControl : false
    };
googleMapDiv = document.getElementById('googleMap');
var googleMap = new google.maps.Map(googleMapDiv, googleMapOptions);
openLayersView = new ol.View({
            // Do NOT go beyond the 22 zoom levels of Google Maps
            maxZoom : 22,
            minZoom : 1
        });

        // setting open layer settings
        openLayersMapDiv = document.getElementById('openLayersMap');
        var map = new ol.Map({
            controls : ol.control.defaults().extend([ new ol.control.ScaleLine({
                unit : 'degrees',
            }) ]),
            interactions : ol.interaction.defaults({
                altShiftDragRotate : false,
                dragPan : false,
                rotate : false,
                pinchRotate : false,
                mouseWheelZoom:false
            }).extend([ new ol.interaction.DragPan({
                kinetic : null
            }) ]),
            target : openLayersMapDiv,
            view : openLayersView
        });

Я видел эту проблему: https://code.google.com/p/gmaps-api-issues/issues/detail?id=5209 и попытался включить, draggableно безуспешно.

Я использую Google Maps API 3.2 и openlayers 3.0.0.

Я изучил проблему. При увеличении масштаба значение полученного увеличения не googleMap.getZoom()определено.

Автор: Jalal Mostafa Источник Размещён: 18.07.2016 11:12

Ответы (1)


0 плюса

687 Репутация автора

Решение

Проблема в том, чтобы звонить panToна Google Maps вместо того, чтобы я использовал setCenter().

openLayersView.on('change:center', function() {
        var center = ol.proj.transform(openLayersView.getCenter(), EPSG_3857, EPSG_4326);
        //googleMap.panTo(new google.maps.LatLng(center[1], center[0])); <-- causes the exception
        googleMap.setCenter(new google.maps.LatLng(center[1], center[0]));
});
Автор: Jalal Mostafa Размещён: 22.07.2016 01:49
Вопросы из категории :
32x32