1

嗨,我正在将谷歌地图元素放入我正在编写的应用程序中,并且无法在用户的当前位置上放置图钉。

我可以让地图加载图钉的融合表层,并以用户当前位置为中心,但我希望能够在用户当前位置放置一个标记,并调整地图大小以适合所有标记. 这可能吗?如果不是,我可以将缩放设置为适当的级别。

这是我正在使用的代码:

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 调用当前位置的原因,提前感谢任何花时间提供帮助的人。

4

1 回答 1

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 对象,然后将其用作地图的参数。适合边界。

这里有几个例子(但与您的表格不同的列布局(两列位置)。可以针对您的列布局调整概念(查询单列位置,解析它以创建一个 google.maps .LatLng 并将其添加到 google.maps.LatLngBounds):

将地图缩放并以表格中的数据为中心的示例。笔记:

  1. 使用的 GViz API 限制为 500 行,如果您有更多数据,您可能不想这样做。
  2. 地图以数据而不是用户为中心。
于 2013-05-29T12:33:50.330 回答