Карты Google продолжают скользить после панорамирования [дубликат]

Буквально самый простой способ исправить NullReferenceExeption имеет два пути. Если у вас есть GameObject, например, с прикрепленным скриптом и переменной с именем rb (rigidbody), эта переменная начнет пустую, когда вы начнете игру. Вот почему вы получаете NullReferenceExeption, потому что на компьютере нет данных, хранящихся в этой переменной.

В качестве примера я буду использовать переменную RigidBody. Мы можем добавить данные действительно легко на самом деле несколькими способами:

  1. Добавить RigidBody к вашему объекту с помощью AddComponent> Физика> Rigidbody Затем зайдите в свой скрипт и введите rb = GetComponent<Rigidbody>();. Эта строка кода работает лучше всего под ваши функции Start() или Awake().
  2. Вы можете добавить компонент программно и назначить переменную одновременно с одной строкой кода: rb = AddComponent<RigidBody>();

Дальнейшие заметки: если вы хотите, чтобы единство добавлялось компонент для вашего объекта, и вы, возможно, забыли добавить его, вы можете ввести [RequireComponent(typeof(RigidBody))] над объявлением класса (пробел ниже всех ваших приложений). Наслаждайтесь и получайте удовольствие от игр!

6
задан pixelfreak 11 August 2011 в 00:14
поделиться

4 ответа

В настоящее время это невозможно сделать с Maps API V3. Рассмотрите возможность подачи запроса функции здесь:

http://code.google.com/p/gmaps-api-issues/

2
ответ дан plexer 25 August 2018 в 13:52
поделиться

Я почти уверен, что можно хотя бы противодействовать импульсу. Кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь! Для простоты, например, предположим, что ваш контейнер карты имеет width из 100vw и height из 100vh. Вы просто вызываете getCenter() в функции, вызываемой событием mouseup, а затем используйте эти координаты сразу setCenter()?

function initMap(){

    ...

    var win = window;
    google.maps.event.addDomListener(win, 'mouseup', setCoords);
    function setCoords(){
        var x = myMap.getCenter();
        var lat = x.lat();
        var lng = x.lng();
        myMap.addListener('center_changed', function(lat, lng){
        myMap.setCenter(new google.maps.LatLng(lat, lng));
    };
};

. На самом деле код работает, но кикер что он работает только один раз до тех пор, пока браузер не станет, по-видимому, перегружен и не выдает ошибку. Uncaught RangeError: превышен максимальный размер стека вызовов.

Не уверен, что делать сейчас.

Подробнее об этом здесь .

0
ответ дан Community 25 August 2018 в 13:52
поделиться

Сегодня я столкнулся с этой же проблемой, и некоторые пользовательские Div разворачиваются над картой, которую нужно переместить в Map Movement. Моя перепозиция работала нормально, пока пользователь полностью остановился после перетаскивания, прежде чем позволить мыши перейти (так что не будет никакого импульса), но если бы вы просто быстро потянули и выпустили div, это закончится немного.

Чтобы исправить это, я подключился к событию перетаскивания и событию бездействия:

var map = /* All the map config */
var stickyCenter = map.getCenter();
/* ... Code ... */
google.maps.event.addListener(map, 'drag', function(){ stickyCenter = map.getCenter(); });
google.maps.event.addListener(map, 'idle', function() { map.setCenter(stickyCenter); });

Что происходит, так это после того, как вы перетащили и карта остановилась (после импульса ) карта «привязывается» к месту.

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

4
ответ дан EdgeCaseBerg 25 August 2018 в 13:52
поделиться

Используйте недокументированную опцию disablePanMomentum , например:

new google.maps.Map(document.getElementById(id), {
    disablePanMomentum: true,
    backgroundColor: 'none',
    disableDefaultUI: true,
    center: {
        lat: 40.674,
        lng: -73.945
    },
    zoom: 2,
    ...
5
ответ дан Orwellophile 25 August 2018 в 13:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: