Текущее местоположение пользователя с помощью 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;
};