Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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
Google maps api 3 谷歌地图和位置_Google Maps Api 3 - Fatal编程技术网

Google maps api 3 谷歌地图和位置

Google maps api 3 谷歌地图和位置,google-maps-api-3,Google Maps Api 3,我正在使用CakePHP构建一个应用程序,它将存储事件,包括事件位置。当用户访问该应用程序时,他们将看到一个谷歌地图,该地图将获取他们的位置,并以小插脚的形式显示他们附近的事件,他们可以单击这些插脚查看事件详细信息 不过,我有一些问题: 1.)如何在数据库中存储位置?实际地理位置坐标是最佳选择吗?我如何让用户轻松创建事件并输入它们 2.)一旦事件就绪,如何使用从数据库中提取的信息创建自定义PIN?例如foursquare: 3.)在使用HTML5地理位置获取用户位置的同时,如何像Foursqu

我正在使用CakePHP构建一个应用程序,它将存储事件,包括事件位置。当用户访问该应用程序时,他们将看到一个谷歌地图,该地图将获取他们的位置,并以小插脚的形式显示他们附近的事件,他们可以单击这些插脚查看事件详细信息

不过,我有一些问题:

1.)如何在数据库中存储位置?实际地理位置坐标是最佳选择吗?我如何让用户轻松创建事件并输入它们

2.)一旦事件就绪,如何使用从数据库中提取的信息创建自定义PIN?例如foursquare:

3.)在使用HTML5地理位置获取用户位置的同时,如何像Foursquare那样在地图上再次显示一个小加载器

到目前为止,我已经成功地创建了地图,缩小了控件,并获得了查看器的位置,但我不确定如何做到这一点,并向用户显示更好的地理位置反馈

如果有人能帮我解决另外两个问题,我将不胜感激,因为到目前为止,我觉得这很困惑。谢谢

      var map;
      function initialize() {
        var myOptions = {
          zoom: 8,
          panControl: false,
            zoomControl: true,
            zoomControlOptions: {
                style: google.maps.ZoomControlStyle.SMALL
              },
            mapTypeControl: false,
            scaleControl: false,
            streetViewControl: false,
            overviewMapControl: false,
          center: new google.maps.LatLng(-34.397, 150.644),
          mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        map = new google.maps.Map(document.getElementById('map_canvas'),
            myOptions);

        // Try HTML5 geolocation
                if(navigator.geolocation) {
                  navigator.geolocation.getCurrentPosition(function(position) {
                    var pos = new google.maps.LatLng(position.coords.latitude,
                                                     position.coords.longitude);

                    var infowindow = new google.maps.InfoWindow({
                      map: map,
                      position: pos,
                      content: 'Location found using HTML5.'
                    });

                    map.setCenter(pos);
                  }, function() {
                    handleNoGeolocation(true);
                  });
                } else {
                  // Browser doesn't support Geolocation
                  handleNoGeolocation(false);
                }
              }

              function handleNoGeolocation(errorFlag) {
                if (errorFlag) {
                  var content = 'Error: The Geolocation service failed.';
                } else {
                  var content = 'Error: Your browser doesn\'t support geolocation.';
                }

                var options = {
                  map: map,
                  position: new google.maps.LatLng(60, 105),
                  content: content
                };

                var infowindow = new google.maps.InfoWindow(options);
                map.setCenter(options.position);
      }

      google.maps.event.addDomListener(window, 'load', initialize);
1)存储位置的实际坐标和任何额外的元数据(如果有),如地名、foursquare\u id、日期等。以这种方式存储将使以后使用数据变得简单,例如在地图上绘图或位置名称查找。这将是您的位置型号

创建一个事件模型,然后可以将其关联到一个位置。您可以使用地图标记上的事件处理程序来拼凑一些不错的交互功能

类似于:“用户单击地图上的某个位置,弹出一个框,询问他们是否希望在此位置创建新事件,将标记添加到地图中,并显示一个表单,在其中他们可以填充事件详细信息,等等。”你明白了

看一看这张照片

2)您可以使用为地图标记设置自定义图像。看一看巨大的数据,寻找可能的想法

3)我理解的
navigator.geolocation.getCurrentPosition()
方法是异步的。第一个参数是successCallback


考虑到这一点,您可以在地图上设置覆盖:“查找您的位置”,然后调用getCurrentPosition()。在你的successCallback函数中,你会隐藏覆盖图。

你是如何处理这个@Cameron的?嘿,朋友。到目前为止,我还没有太多的时间来处理它,但我发现它非常混乱。你能举个简单的例子吗?干杯