Кордова Google Maps - Смещение положения - PullRequest
0 голосов
/ 30 января 2019

прежде всего, чтобы упомянуть, что я видел подобные сообщения: Как сместить центральную точку в Google Maps API V3 , но это не завершает то, что я хочу достичь.

Моя ситуация следующая: у меня есть карта Google, на которой я хочу установить наклон, и пользователь может увеличивать / уменьшать масштаб, и я хочу поместить центр карты немного выше, чтобы маркер положения пользователя был немного большевниз.В настоящее время я делаю это с этим кодом:

private async centerMapWithOffset(latlng: ILatLng): Promise<void> {
    return new Promise(async (resolve, reject) => {
      this.map.setCameraZoom(100);
      let point1 = await this.map.fromLatLngToPoint(latlng);
      let offsety = (window.screen.availHeight * 0.3 * -1);

      this.map.animateCamera({
         target: await this.map.fromPointToLatLng([point1[0], point1[1] + offsety]),
         duration: 1000
      });

      resolve();
    });
  }

Это в настоящее время работает.Но сейчас у меня две проблемы:

  • Обратите внимание, мне нужно установить масштаб на 100%, прежде чем начинать исчисление смещения по y с помощью: this.map.setCameraZoom(100).Потому что, если пользователь имеет масштаб, не равный 100%, он не будет правильно центрировать карту, оставляя маркер положения рядом с нижней частью экрана.
  • Как я уже говорил, я хочу иметь tilt вмоя картаНо опять же, если у меня установлен наклон до или после выполнения исчисления, он не будет правильно центрировать мою карту.

В посте, на который я ссылался в начале, они используют Math.pow(2, map.getZoom()), но если яиспользуйте это, это будет полностью центрировать карту вместо того, чтобы двигаться немного вверх, как я хочу.Что касается tilt, то здесь ничего не указано ...

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

private async centerMapWithOffset(latlng: ILatLng): Promise<void> {
        return new Promise(async (resolve, reject) => {
          let point1 = await this.map.fromLatLngToPoint(latlng);
          let offsety = calculus...;

          this.map.animateCamera({
             target: await this.map.fromPointToLatLng([point1[0], point1[1] + offsety]),
             duration: 1000,
             tilt: 50,
             zoom: 100
          });

          resolve();
        });
      }

Это плагин, который я использую.

Я надеюсь, что вы, ребята, можете помочь с этим, спасибо.

...