Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图API 3需要帮助吗_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 谷歌地图API 3需要帮助吗

Javascript 谷歌地图API 3需要帮助吗,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我正在为我的应用程序使用谷歌地图API 3 所以我想做的是下一步。 加载页面时,我将获得以下格式的位置数组: var locations = [ ['Bondi Beach', -33.890542, 151.274856, 4], ['Coogee Beach', -33.923036, 151.259052, 5], ['Cronulla Beach', -34.028249, 151.157507, 3], ['Manly Beach', -33.8001012865707

我正在为我的应用程序使用谷歌地图API 3

所以我想做的是下一步。 加载页面时,我将获得以下格式的位置数组:

var locations = [
  ['Bondi Beach', -33.890542, 151.274856, 4],
  ['Coogee Beach', -33.923036, 151.259052, 5],
  ['Cronulla Beach', -34.028249, 151.157507, 3],
  ['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
  ['Maroubra Beach', -33.950198, 151.259302, 1]
];
首先,我想为每个位置添加标记

var marker, i;

    for (i = 0; i < locations.length; i++) {  
      marker = new google.maps.Marker({
        position: new google.maps.LatLng(locations[i][1], locations[i][2]),
        map: map
      });
这将缩放屏幕中央初始化的所有标记,但在开始时只有一次,因为用户可能会在地图上查看其他内容,所以不会使用中心

我想要一个标记一直在移动,所以我可能需要添加一些事件处理程序来一直获取新位置

然后,当你点击标记时,你被放大了,标记还在移动(获得新的位置),但是现在我需要使用我将在php数组中发送的ID,这样我就可以用这个参数调用一些php函数

之后,当用户点击侧边的按钮时,我希望能够在请求开始时到达,这意味着在屏幕中央加载标记

单击“退出”按钮:

 google.maps.event.addListener(marker, 'click', function() {
    map.setZoom(13);
    map.setCenter(marker.getPosition());
    google.maps.event.addListener(map, 'center_changed', function() {
    // 1 seconds after the center of the map has changed, pan back to the
    // marker.
    window.setTimeout(function() {
      map.panTo(marker.getPosition());
    }, 1000);
  });
  });
}
所以基本上我告诉了你们我想要实现的一切我相信你们中的很多人都做了同样的事情。这些是来自许多源代码的一部分,我需要使它们协同工作,并添加一些较小的新特性,正如我在上面所写的


谢谢

所以听起来好像您正在检索
位置
变量,每隔几秒钟重复一次数据库查询。在这个演示中,我使用JSON检索数据,并更新位置或创建标记(如果它不存在)

使用两个侦听器跟踪标记:

        google.maps.event.addListener(trucks[data.results[i].id], 'position_changed', function() {
          if(typeof tracked !== "undefined") {
            if(this.id == tracked.id) {
              map.panTo(this.getPosition());
              $("#speed").val(this.speed);
            } 
          } 
        });         

        google.maps.event.addListener(trucks[data.results[i].id], 'click', function() {
          $("#trackedId").val(this.id);
          map.setZoom(13);
          map.setCenter(this.getPosition());
          tracked = this;
        });
此文件包含实现您尝试执行的操作所需的所有代码(带有ID和附加操作的可单击图标列表等)

只需取消对第449-460行的注释,您就可以看到它是如何工作的


欢迎您获取源代码并使用它,因为它是开源的。

可能有很多文本,但我认为如果您知道自己在做什么,请求会非常小:)重复您的问题:。请看一看我在你原来问题的最新修改中添加的新编辑,看看这是否有帮助。这不会给你带来困难,但让原来的问题更清晰更有意义,而不是创建一个更清晰的重复问题。我认为这里有太多的免费帮助(除了复制另一个问题而不是细化它)。1:缩放到标记。2:定期刷新。3:标记单击或按钮单击或两者兼而有之[没有足够的数据来知道您在这里想要什么]。每一个问题都应该在单独的问题中依次提问,以之前的问题为基础,并展示您为实现目标而尝试的代码。有人能告诉我如何使下面的代码在接收阵列(lat、lng、序列号)时工作,因为此代码适用于其他一些值。我将有一个php,它将返回一个json格式,正如这段代码所示。但只有我需要一个标记的名称和id才能有一个序列号。任何答案都是好答案!请帮助,你可以得到100分。这是一个非常好的代码。这正是我需要的。所以我想每隔大约10秒从mysql数据库中获取数据。我从数据库中得到的唯一数据是纬度和经度,但我认为方向可以确定坐标是从负开始还是从正开始。无论如何,请举手。我需要知道方向吗?或者marker会被移动到那个位置?嗨,你能给我发封电子邮件给Dennth吗。jesus@gmail.com我有一些问题要问你让我们把它保存在堆栈溢出中,这样其他人也可以帮忙。你看,我对PHP一点也不在行,而且它在你的项目中似乎很重要。我需要掌握世界的这一面吗?或者我可以给它一个新的坐标,它就会移动。顺便说一句,当你按下“重置”键时,代码停止。它是否能够继续显示所有标记以及它们的移动方式?我需要从mysql数据库中获取Lat、Lng和序列号。北部、南部、东部和西部仅作为示例。我编写的PHP文件接收'dir'参数,并对选择进行特定的移动。重置使一切回到原来的位置,我确实故意让一切停止。当你访问数据库时,你不需要首先传递一个ID吗?好的,我看看你得到了什么。谢谢这是你的剧本吗?如果它是开源的,为什么我没有找到它:)我搜索了一个lothmm我检查了代码。哇,代码太多了。基本上这不是我需要的。我的意思是也许是,但我不知道从哪里开始。因此,我需要的先生是下一步:在页面的开始,我需要收集数据,如这条注释行中所示,但不同的值。然后,当我从数据库中每隔X秒检索最后一个值时,我需要它们开始移动。当我单击某个标记时,它会缩放,我需要能够读取传递给该标记的其他值,以便读取和显示。任何想法都是好的谢谢你有没有私人邮件与你联系?我真的需要一些帮助是的,我写的。解决问题所需的90%Javascript都在我提供的代码中。恐怕我不能为你做最后的10%>;-)
    function updateTrucks() {
      $.ajax({
        url: "gettruck.php",
        cache: false,
        dataType: 'json',
        data: {},
        error: function(jqxhr, textStatus, errorThrown) {
          alert("Error: " + textStatus + " " + errorThrown);
        },
        success: function(data) {
        for(var i = 0; i < data.results.length; i++) {
          if(trucks.hasOwnProperty(data.results[i].id)) {
            // update position
            trucks[data.results[i].id].setPosition(new google.maps.LatLng(
              parseFloat(data.results[i].lat),
              parseFloat(data.results[i].lng)));
            trucks[data.results[i].id].speed = data.results[i].speed;
          }
          else {
            // create new marker
            trucks[data.results[i].id] = new google.maps.Marker({
              map: map,
              position: new google.maps.LatLng(
                parseFloat(data.results[i].lat),
                parseFloat(data.results[i].lng)),
              title: data.results[i].name,
              id: data.results[i].id
            });
header("Content-type: application/json");
echo '{ "results" : [ ';

$gettruck_result = $dbh->query("SELECT * FROM `truck`");
$result_array = array();

foreach($gettruck_result as $row) {
  $newlat = $row['lat'] + (0.0025 * rand(-3,3));
  $newlng = $row['lng'] + (0.0025 * rand(-3,3));

  $speed = $row['speed'] + rand(1,8);

  $row_object = '{';
  $row_object .= '"id": "' . $row['id'] . '", ';
  $row_object .= '"speed": "' . $speed . '", ';
  $row_object .= '"name": "' . $row['name'] . '", ';
  $row_object .= '"lat": "' . $newlat . '", ';
  $row_object .= '"lng": "' . $newlng . '"';
  $row_object .= '}';    
  $result_array[] = $row_object;
}

$result_str = implode(", ", $result_array);
echo $result_str;
echo " ] }";
        google.maps.event.addListener(trucks[data.results[i].id], 'position_changed', function() {
          if(typeof tracked !== "undefined") {
            if(this.id == tracked.id) {
              map.panTo(this.getPosition());
              $("#speed").val(this.speed);
            } 
          } 
        });         

        google.maps.event.addListener(trucks[data.results[i].id], 'click', function() {
          $("#trackedId").val(this.id);
          map.setZoom(13);
          map.setCenter(this.getPosition());
          tracked = this;
        });