2017-07-17 82 views
0

我想要在附近的地方找到我目前的位置。目前我面臨的問題是,我只能找回10個標記地圖,它不給回了位置,有沒有辦法繞過或解決這個問題,顯然我已經在網上看了,谷歌限制你只能到10個標記有沒有辦法在地圖上獲得10個以上的標記

googleMaps.js:

//Variable init 
    var map; 
    var infowindow; 
    var service; 
    var markers = []; 
    //var myLatLng= new google.maps.LatLng(-33.8665433,151.1956316); 

    //Dom init 
    $('#details').hide(); 
    $('#gym').prop('checked', true); 
    $('#park').prop('checked', true); 
    $('#store').prop('checked', true); 
    $('#museum').prop('checked', true); 
    //$('#zoo').prop('checked', true); 
    $('#cafe').prop('checked', true); 

    //Function init 
    geoLocationInit(); 

    //Google maps area 
    function geoLocationInit() { 
     if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(success, fail); 
     } else { 
      alert("Browser not supported"); 
     } 
    } 

    function success(position) { 
     var latval = position.coords.latitude; 
     var Ingval = position.coords.longitude; 
     myLatLng = new google.maps.LatLng(latval, Ingval); 
     initMap(myLatLng); 
    } 

    function fail() { 
     alert("it fails"); 
    } 

    function initMap(myLatLng) { 
     map = new google.maps.Map(document.getElementById('map'), { 
      center: myLatLng, 
      zoom: 12 
     }); 

     var request = { 
      location: myLatLng, 
      radius: 8047, 
      types: ['cafe', 'gym', 'park', 'store', 'museum'] 
     }; 

     infowindow = new google.maps.InfoWindow(); 
     service = new google.maps.places.PlacesService(map); 
     service.nearbySearch(request, callback); 
     map.addListener('idle', performSearch); 
    } 




    function callback(results, status) { 
     if (status == google.maps.places.PlacesServiceStatus.OK) { 
      for (var i = 0; i < results.length; i++) { 
       addMaker(results[i]); 
      } 
     } 
    } 

    function addMaker(place) { 
     service.getDetails({ 
      placeId: place.place_id 
     }, function (place, status) { 
      if (status === google.maps.places.PlacesServiceStatus.OK) { 
       var marker = new google.maps.Marker({ 
        name: place.name, 
        map: map, 
        position: place.geometry.location, 
        types: place.types 
       }); 

       markers.push(marker); 

       google.maps.event.addListener(marker, 'click', function() { 
        var review = []; 
        if (undefined !== place.reviews && place.reviews.length) { 
         for (var i = 0; i < place.reviews.length; i++) { 
          if (place.reviews[i].text) { 
           review.push('<b>Author Name:</b>&nbsp;' + place.reviews[i].author_name + '</br>' + '<b>Review:</b>&nbsp;' + place.reviews[i].text + '</br>'); 
          } 
         } 
        } else { 
         review.push('Not Available'); 
        } 

        infowindow.setContent(place.name); 
        infowindow.open(map, this); 
        $('#details').show(); 
        $('#name').html(place.name); 
        $('#rating').html(place.rating + ' ' + 'Star(s)'); 
        $('#address').html(place.adr_address); 
        $('#review').html(review); 
       }); 
      } 
     }); 
    } 

    //Gym markers 
    function gymMarkers() { 
     markerType = ''; 
     var check = $('#gym').is(':checked'); 
     if (check) { 
      for (var i = 0; i < markers.length; i++) { 
       for (var j = 0; j < markers[i].types.length; j++) { 
        if (markers[i].types[j] == "gym") { 
         markers[i].setVisible(true); 
        } 
       } 
      } 
     } else { 
      for (var i = 0; i < markers.length; i++) { 
       for (var j = 0; j < markers[i].types.length; j++) { 
        if (markers[i].types[j] == "gym") { 
         markers[i].setVisible(false); 
        } 
       } 
      } 
     } 
    } 

    //Park markers 
    function parkMarkers() { 
     var check = $('#park').is(':checked'); 
     if (check) { 
      for (var i = 0; i < markers.length; i++) { 
       for (var j = 0; j < markers[i].types.length; j++) { 
        if (markers[i].types[j] == "park") { 
         markers[i].setVisible(true); 
        } 
       } 
      } 
     } else { 
      for (var i = 0; i < markers.length; i++) { 
       for (var j = 0; j < markers[i].types.length; j++) { 
        if (markers[i].types[j] == "park") { 
         markers[i].setVisible(false); 
        } 
       } 
      } 
     } 
    } 

    //Store markers 
    function storeMarkers() { 
     var check = $('#store').is(':checked'); 
     if (check) { 
      for (var i = 0; i < markers.length; i++) { 
       for (var j = 0; j < markers[i].types.length; j++) { 
        if (markers[i].types[j] == "store") { 
         markers[i].setVisible(true); 
        } 
       } 
      } 
     } else { 
      for (var i = 0; i < markers.length; i++) { 
       for (var j = 0; j < markers[i].types.length; j++) { 
        if (markers[i].types[j] == "store") { 
         markers[i].setVisible(false); 
        } 
       } 
      } 
     } 
    } 

    //Museum markers 
    function museumMarkers() { 
     var check = $('#museum').is(':checked'); 
     if (check) { 
      for (var i = 0; i < markers.length; i++) { 
       for (var j = 0; j < markers[i].types.length; j++) { 
        if (markers[i].types[j] == "museum") { 
         markers[i].setVisible(true); 
        } 
       } 
      } 
     } else { 
      for (var i = 0; i < markers.length; i++) { 
       for (var j = 0; j < markers[i].types.length; j++) { 
        if (markers[i].types[j] == "museum") { 
         markers[i].setVisible(false); 
        } 
       } 
      } 
     } 
    } 

    //Zoo markers 
    // function zooMarkers() { 
    //  var check = $('#zoo').is(':checked'); 
    //  if (check) { 
    //   for (var i = 0; i < markers.length; i++) { 
    //    for (var j = 0; j < markers[i].types.length; j++) { 
    //     if (markers[i].types[j] == "zoo") { 
    //      markers[i].setVisible(true); 
    //     } 
    //    } 
    //   } 
    //  } else { 
    //   for (var i = 0; i < markers.length; i++) { 
    //    for (var j = 0; j < markers[i].types.length; j++) { 
    //     if (markers[i].types[j] == "zoo") { 
    //      markers[i].setVisible(false); 
    //     } 
    //    } 
    //   } 
    //  } 
    // } 

    //Cafe markers 
    function cafeMarkers() { 
     var check = $('#cafe').is(':checked'); 
     if (check) { 
      for (var i = 0; i < markers.length; i++) { 
       for (var j = 0; j < markers[i].types.length; j++) { 
        if (markers[i].types[j] == "cafe") { 
         markers[i].setVisible(true); 
        } 
       } 
      } 
     } else { 
      for (var i = 0; i < markers.length; i++) { 
       for (var j = 0; j < markers[i].types.length; j++) { 
        if (markers[i].types[j] == "cafe") { 
         markers[i].setVisible(false); 
        } 
       } 
      } 
     } 
    } 

前.blade.php

@extends('layouts.master') 

@section('content') 


    <!-- This is a *view* - HTML markup that defines the appearance of your UI --> 
    <div id='searchBar'> 
     <p>Search: <strong data-bind="text: location"></strong></p> 
     <p><input type='checkbox' onclick="gymMarkers();" id='gym'> Gyms </p> 
     <p><input type='checkbox' onclick="parkMarkers();" id='park'>Parks </p> 
     <p><input type='checkbox' onclick="storeMarkers();" id='store'> Stores </p> 
     <p><input type='checkbox' onclick="museumMarkers();" id='museum'> Museums </p> 
     <p><input type='checkbox' onclick="zooMarkers();" id='zoo'> Zoos </p> 
     <p><input type='checkbox' onclick="cafeMarkers();" id='cafe'> cafe </p> 
    </div> 

    <div class="container"> 
     {{--Google maps--}} 
     <div id="map"></div> 

     {{--Cafe details--}} 
     <div id="details" style="visibility:false"> 
      <table class="table table-bordered" style="width: 500px; margin-top: 10px;"> 
       <tr> 
        <td colspan="2" style="text-align: center;"><b>Description</b></td> 
       </tr> 
       <tr> 
        <td width="150">Name</td> 
        <td id="name"></td> 
       </tr> 
       <tr> 
        <td width="150">Rating</td> 
        <td id="rating"></td> 
       </tr> 
       <tr> 
        <td width="150">Address</td> 
        <td id="address"></td> 
       </tr> 
       <tr> 
        <td width="150">User Review</td> 
        <td id="review"></td> 
       </tr> 
      </table> 
     </div> 

     {{--Review--}} 
     <div> 
      <ul class="reviews"></ul> 
     </div> 
     {{--Example--}} 
     <div> 
      <ul class="example"></ul> 
     </div> 
    </div> 

@endsection 

Image of map

回答

0

我可以看到您在使用JavaScript代碼搜索附近的地方。附近的搜索可以在3頁中返回60個結果。在Places API的網絡服務文檔說以下內容:

默認情況下,每個周邊搜索或文本搜索最多可返回每次查詢20個establishment結果;但是,每個搜索可以返回多達60個結果,分爲三個頁面。如果您的搜索將返回超過20個,那麼搜索響應將包含一個附加值 - next_page_token。將next_page_token的值傳遞給新搜索的pagetoken參數以查看下一組結果。

在Maps JavaScript API的地方庫中,行爲類似。 nearbySearch() [1]方法的回調函數返回類型爲PlaceSearchPagination [2]的第三個參數。分頁有一個屬性hasNextPage,允許檢查是否有更多的結果。如果是這樣,您可以撥打nextPage()的分頁方法。

有演示如何使用分頁與附近搜索的例子:

https://developers.google.com/maps/documentation/javascript/examples/place-search-pagination

另外,需要注意的是宿API作爲一個數據庫搜索無法正常工作,並且不會返回所有結果。它僅返回指定區域的顯着結果。谷歌如何決定哪些結果突出,哪些不是我不能說的。因此,如果第一頁的結果少於20條,這意味着Google無法在此區域找到20個顯着結果。

我希望我的回答能澄清你的疑問。

[1] https://developers.google.com/maps/documentation/javascript/reference#PlacesService

[2] https://developers.google.com/maps/documentation/javascript/reference#PlaceSearchPagination

相關問題