嗨,所以我正在将google maps元素添加到我正在编写的应用中,并且无法在用户的当前位置放置引脚。
我可以让地图加载一个引脚的融合表层,并以用户当前位置为中心,但我希望能够在用户的当前位置放置一个标记,并调整地图大小以适应所有的标记。这可能吗?如果不是,我可以将缩放设置为适当的水平。
这是我正在使用的代码:
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);
我还应该说[app:user-lat]和[app:user-lon]调用是特定于应用程序的,从移动设备获取数据,并将用于插入当前用户的位置。这就是我没有通过谷歌地图api调用当前位置的原因,提前感谢任何花时间提供帮助的人。
答案 0 :(得分: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对象,然后将其用作参数to map.fitBounds。
以下是一些示例(但是具有与您的表不同的列布局(两列位置)。)可以针对列布局调整概念(查询单列位置,解析它以创建一个google.maps.LatLng并将其添加到google.maps.LatLngBounds):
example that zooms and centers the map on the data in your table。注意: