1

Привет, поэтому я работаю с элементом google maps в приложении, которое я пишу, и у меня возникают проблемы с сбросом вывода в текущем местоположении пользователя.Отбрасывание маркера с помощью Google Maps api и javascript

Я могу получить карту для загрузки слоя плагинов с плавающей точкой и сосредоточиться на текущем местоположении пользователя, но я бы хотел, чтобы потом отбросил маркер в текущем местоположении пользователя и изменил размер карты на поместим все маркеры. Это возможно? Если нет, я могу просто установить масштабирование на соответствующий уровень.

Это код, я работаю с:

var geocoder = new google.maps.Geocoder(); 
function initialize() { 
    map = new google.maps.Map(document.getElementById('googft-mapCanvas'), { 
     center: new google.maps.LatLng([app:user-lat], [app:user-lon]), 
     zoom: 12, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

    layer = new google.maps.FusionTablesLayer({ 
     map: map, 
     heatmap: { enabled: false }, 
     query: { 
      select: "col2, col0", 
      from: "1pbba_dFcpWQKQDXQUt9RNXp16GqX5Jz-NraafEI", 
      where: "" 
     }, 
     options: { 
      styleId: 3, 
      templateId: 3 
     } 
    }); 
} 

google.maps.event.addDomListener(window, 'load', initialize); 

Я должен также сказать, что [приложение: пользователь однолатовая] и [приложение: пользователь-LON] звонки от приложения, принимая данные из мобильное устройство, и будет работать, чтобы вставить местоположение текущего пользователя. Именно по этой причине я не звоню на текущую позицию через google maps api, заранее заранее, чтобы кто-то нашел время, чтобы помочь.

ответ

0

Чтобы поместить маркер в позиции пользователя, добавьте это после того, как вы определили вашу карту:

var marker = new google.maps.Marker({ 
    position: new google.maps.LatLng([app:user-lat], [app:user-lon]), 
    map: map 
}); 

Если вы хотите, чтобы переместить его по мере перемещения пользователя, что будет немного сложнее, сохранить ссылку к нему и используйте marker.setPosition.

function initialize() { 
    map = new google.maps.Map(document.getElementById('googft-mapCanvas'), { 
     center: new google.maps.LatLng([app:user-lat], [app:user-lon]), 
     zoom: 12, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

    var marker = new google.maps.Marker({ 
     position: new google.maps.LatLng([app:user-lat], [app:user-lon]), 
     map: map 
    }); 


    layer = new google.maps.FusionTablesLayer({ 
     map: map, 
     heatmap: { enabled: false }, 
     query: { 
      select: "col2, col0", 
      from: "1pbba_dFcpWQKQDXQUt9RNXp16GqX5Jz-NraafEI", 
      where: "" 
     }, 
     options: { 
      styleId: 3, 
      templateId: 3 
     } 
    }); 
} 

google.maps.event.addDomListener(window, 'load', initialize); 

Чтобы центрировать карту на маркеры (или уменьшить масштаб карты, чтобы показать им все, что вам нужно будет запросить FusionTable для всех маркеров, построить объект google.maps.LatLngBounds из их местоположения, а затем использовать что в качестве аргумента для map.fitBounds.

Вот несколько примеров, которые делают это (но с другим расположением столбцов (расположение по двум столбцам), чем ваша таблица. Концепция может быть скорректирована для вашего макета столбца (запрос для в одном столбце, проанализируйте его, чтобы создать google.maps.LatLng и добавить его в google.maps.LatLngBounds):

example that zooms and centers the map on the data in your table. Примечания:

  1. Используемый API GViz ограничен 500 строками, если у вас есть больше данных, которые вы, вероятно, не хотите делать в любом случае.
  2. Карты ориентированы на данные, а не на пользователя.
Смежные вопросы