根据用户的地理位置居中谷歌地图

时间:2013-12-30 23:11:07

标签: google-maps geolocation

我的网站上有一个谷歌地图(v2),用于获取用户的经纬度,将其作为表单发送。我需要的是使这个地图最初根据用户的地理位置进行居中。我明白这不是一个实际的问题,但我不是很熟悉谷歌地图api和网上的所有教程是基于谷歌地图v3我不希望麻烦迁移到v3并重新编写所有的东西。所以,如果有人引导我朝着正确的方向努力使这个功能在gmap(v2)上工作,我感激不尽。以下是我的代码的样子:

if (GBrowserIsCompatible()) {
    var map = new GMap2(document.getElementById("map"));
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());

    var center = new GLatLng(43.65323, -79.38318);

    map.setCenter(center, 15);

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function (position) {
            initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
            map.setCenter(initialLocation);
        });
    }

    geocoder = new GClientGeocoder();
    var marker = new GMarker(center, {
        draggable: true
    });
    map.addOverlay(marker);
    document.getElementById("b-lat").value = center.lat().toFixed(5);
    document.getElementById("b-longt").value = center.lng().toFixed(5);

    GEvent.addListener(marker, "dragend", function () {
        var point = marker.getPoint();
        map.panTo(point);
        document.getElementById("b-lat").value = point.lat().toFixed(5);
        document.getElementById("b-longt").value = point.lng().toFixed(5);

    });
    GEvent.addListener(map, "moveend", function () {
        map.clearOverlays();
        var center = map.getCenter();
        var marker = new GMarker(center, {
            draggable: true
        });
        map.addOverlay(marker);
        document.getElementById("b-lat").value = center.lat().toFixed(5);
        document.getElementById("b-longt").value = center.lng().toFixed(5);


        GEvent.addListener(marker, "dragend", function () {
            var point = marker.getPoint();
            map.panTo(point);
            document.getElementById("b-lat").value = point.lat().toFixed(5);
            document.getElementById("b-longt").value = point.lng().toFixed(5);

        });

    });

}

2 个答案:

答案 0 :(得分:0)

请参阅我的其他帖子:Android maps v2 - get map zoom

要简单放大,请使用:

float zoomLevel = 20.0f;
map.animateCamera(CameraUpdateFactory.zoomTo(zoomLevel); 

要缩放到标记,请使用:

LatLng l = new LatLng(LATPOSITION, LONGPOSITION); float zoomLevel =
20.0f; map.animateCamera(CameraUpdateFactory.newLatLngZoom(l, zoomLevel)); 

将这些添加到您希望缩放发生的位置。

注意:这是针对Java android的,可能需要为网络编辑它。

答案 1 :(得分:0)

我通过navigator对象找到了解决方案。初始化地图后,我发现用户的lat& longt带有这段代码:

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function (position) {
        userLatitude = position.coords.latitude;
        userLongitude = position.coords.longitude;
        center = new GLatLng(position.coords.latitude, position.coords.longitude);
        map.setCenter(center, 15);
        addMapMarker();
    });
    if(typeof userLatitude == 'undefined' && typeof userLongitude == 'undefined') {
        center = new GLatLng(43.65323, -79.38318);
        map.setCenter(center, 15);
        addMapMarker();
    }
} else {
    center = new GLatLng(43.65323, -79.38318);
    map.setCenter(center, 15);
    addMapMarker();
}