Текущее местоположение пользователя с помощью Google Map Engine?

Я создал автобусный маршрут, используя Google Map Engine. Я хочу добавить указатель (маркер), который будет отображать текущее местоположение пользователя на карте. Как мне это сделать? Я не вижу варианта для этого.

Также я экспортирую файл в формате KML и затем читаю его на своей веб-странице, но он не будет показывать текущее местоположение пользователя на карте, а только маршруты.

https://mapsengine.google.com/map/edit?mid=z0-DS05yFIOY.kaEp4978lVdI

1 ответ

Хорошо, во-первых, Google Maps Engine (GME) - это в основном слой данных / сервисов. И наоборот, позиция пользователя будет исходить из уровня клиент / презентация, которым в данном случае является ваш браузер, мобильное устройство или более сложная настройка с использованием внешнего буфера GPS. В конечном счете, перемещение значка местоположения пользователя на карте - это не то, чего вы не достигнете с GME. Вместо этого вам нужно будет связать технологию, которая непосредственно доступна вашему клиенту, с функциональностью, предоставляемой в API Карт Google.

Я покажу вам решение на основе браузера, которое реализует API геолокации HTML5. Вот еще одно обсуждение и пример. И если у вас есть другие вопросы, вы обнаружите, что это легко для Google. Если вы разрабатываете собственное приложение для мобильного устройства, вам необходимо изучить местоположение партнера / API-интерфейс GPS, соответствующий вашей среде /SDK.

Надеюсь, это поможет.

Использование геолокации HTML5 для отображения изменения местоположения пользователя на карте Google

// Make sure you scope these variables properly, I'm showing them
// at the global/application level..
var _MobilePosition;
var _LAST_GPS_ERROR;


// A simple icon/marker to represent the user's location in the map..
var _MobileIcon = {
    path: 'M 0, 0 m -5, 0 a 5, 5 0 1, 0 10, 0 a 5, 5 0 1, 0 -10, 0',
    fillColor: '#00FF00',
    fillOpacity: 0.8,
    scale: 1,
    strokeColor: '#00FF00',
    strokeWeight: 0
};

var _MobileMarker = new google.maps.Marker({
    icon: _MobileIcon
});    


// WPID = "Watch Position ID".
//
// This is where you start handling the HTML5 geolocation API. Every so many 
// seconds it fires and forwards GPS data to your geo_success or geo_error 
// functions..
//
var _WPID = navigator.geolocation.watchPosition(
    geo_success, 
    geo_error, 
    {
        enableHighAccuracy:true, 
        timeout:5000,
        maximumAge:1000
    }
);


// Handle successful GPS positioning by moving a user position marker around
// in the map..
//
function geo_success(pos)
{
    // This condition prevents moving the marker before the maps library is
    // loaded. Depending how you use this, you may not need this condition.
    //
    if(typeof google.maps.LatLng !== 'undefined')
    {
        var lat = Number(pos.coords.latitude);
        var lng = Number(pos.coords.longitude);

        _MobilePosition = new google.maps.LatLng(lat,lng);

        _MobileMarker.setVisible(true);
        _MobileMarker.setPosition(_MobilePosition);
        _MobileMarker.setMap(_map);

        // Optional: pan the map to the user's position.
        // If you implement this, it's a good idea to give the user
        // some means of disabling this functionality..
        //
        if( typeof _MobilePosition !== 'undefined' )
        {
            _map.panTo(_MobilePosition);
        }
    }
}


// Catch any errors thrown by the geolocation API. I'm not doing anything
// useful with it in this example, just catching it..
// 
function geo_error(error)
{
    _LAST_GPS_ERROR = error;
};
Другие вопросы по тегам