прежде всего, чтобы упомянуть, что я видел подобные сообщения: Как сместить центральную точку в 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();
});
}
Это плагин, который я использую.
Я надеюсь, что вы, ребята, можете помочь с этим, спасибо.