ここに 2 つの質問がありますが、それらは関連しています。centerMapOnUser()
アクションをスムーズにする方法はありますか?現在地を示すマーカーがあり、ドラッグ可能です。
// watch for marker movement, and update location accordingly
function updateUserLocation(latLng) {
var revGeo = new google.maps.Geocoder();
revGeo.geocode({'latLng': latLng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
$('#loc').html(results[1].formatted_address);
}
} else {
alert("Geocoder failed due to: " + status);
}
});
Gmaps.map.userLocation = latLng;
Gmaps.map.centerMapOnUser();
lat = latLng.lat();
lng = latLng.lng();
}
ただし、これは非常に突然であり、ほとんど方向感覚を失います。スムーズな移行を行う方法を誰かが知っているかどうか疑問に思っていました。
副質問。マップに 1 つのマーカーが表示される場合もあれば、26 (AZ) が表示される場合もあります。1 のみの場合、ズーム レベルは最大に設定されます。この機能を無効auto_zoom
にして追加しました:
function zoom() {
if (Gmaps.map.markers.length == 1) {
//only one marker, choose the zoom level you expect
Gmaps.map.serviceObject.setZoom(16);
}
else{
//more than one marker, let's auto_zoom
Gmaps.map.map_options.auto_zoom = true;
Gmaps.map.adjustMapToBounds();
}
}
コンソールを確認すると、マーカーが 0 個、1 個、または複数個あるかどうかにかかわらず、Gmaps.map.markers
常に0 が返されます。ただし、マーカーは最初に追加され、後でreplaceMarkers()
関数を介して追加されるため、すべてが適切に構成されているようです。