-1

私には 3 つの問題があります。最初の 1 つ: 1 km と 2 km のバンクを選択すると、右下のリストに indiacom のイエロー ページが表示され続けます。2 つ目 : 1 km の銀行を選択してから 2 km の銀行を選択すると、最初の 1 km の銀行が消え、1 km から 2 km の銀行のみが表示されます 3 つ目 : 1 km 以内の銀行を選択すると、銀行が表示されます直径1000メートルの円の外側。

<!DOCTYPE html>
<html>
<head>
<style>
html, body, #map-canvas {
height: 100%;
margin: 0px;
padding: 0px
  }
</style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">    
  </script>
<script src="https://maps.googleapis.com/maps/api/js?v=3&sensor=true&libraries=places">    </script>
<script>
 var cityCircle;
var marker;
var clickmarker;
var latilong;
var map;
var infowindow = new google.maps.InfoWindow();
var myCenter;
var markers = [];
var circles = [];
google.maps.visualRefresh = true;

function initialize() 
{
        var styles = [
            {
    "stylers": [
  { "visibility": "on" },
  { "saturation": -40 },
  { "hue": "#F0FAFF" },
  { "weight": 1.7 }
                ]
            }
                    ]

myCenter=new google.maps.LatLng(13.0839, 80.2700);
var options = {
mapTypeControlOptions: {
    mapTypeIds: ['Styled']
},
center:myCenter,
zoom: 14,

mapTypeId: 'Styled'
};
var div = document.getElementById('map-canvas');
map = new google.maps.Map(div, options);
var styledMapType = new google.maps.StyledMapType(styles, { name: 'Styled' });
map.mapTypes.set('Styled', styledMapType);


}



function setPlaces()
{

    var placeType = document.getElementById('cmbMoreFunction').options[document.getElementById('cmbMoreFunction').selectedIndex].value;
    var kiloDistance=document.getElementById('kilometers').options[document.getElementById('kilometers').selectedIndex].value ;

    var request = {
    location:myCenter,
    radius: parseInt(kiloDistance),
    types: [placeType]
};
 function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < markers.length; i++) {
   markers[i].setMap(null);

}
for (var i = 0; i < circles.length; i++) {
  circles[i].setMap(null);

}

for (var i = 0; i < results.length; i++) {
  createMarker(results[i] , placeType);

}
 }
}
function createMarker(place , placeType)
{

var placeLoc = place.geometry.location;
marker = new google.maps.Marker({
    position: place.geometry.location
});
  marker.setIcon({
    url: placeType + '.png',
    size: new google.maps.Size(70, 71),
    anchor: new google.maps.Point(17, 14),
    scaledSize: new google.maps.Size(35, 35)
    });

marker.setMap(map);

google.maps.event.addListener(marker, 'mouseover', function() {
    infowindow.setContent(place.name);
    infowindow.open(map, this);
});

markers.push(marker);
circles.push(cityCircle);
}



  var circleOptions = {

    map: map,
    center: myCenter,
    radius: parseInt(kiloDistance),
    };
if (kiloDistance != -1) {
cityCircle = new google.maps.Circle(circleOptions);
};
var service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);

    }



google.maps.event.addDomListener(window, 'load', initialize);

</script>
</head>
<body>
<div id="map-canvas" style="width: 90%; float:left"></div>

  <div style="width: 10%; float:right">
    <select id="cmbMoreFunction" onchange="setPlaces()" >
        <option value="-1"><--Select--></option>
        <option value="bank">Banks</option>
        <option value="park">Parks</option>
        <option value="store">Stores</option>
     </select>

    </div>
    <select id="kilometers" onchange="setPlaces()" style="width: 10%; float:right">
     <option value="-1"><--Select--></option>   
     <option value="1000">1 KM</option>
     <option value="2000">2 KM</option>
     <option value="3000">3 KM</option>
</select>


   </body>
   </html>
4

1 に答える 1

0

銀行を選択すると、リクエストは常に 20 件 (最大) の結果を返します。たとえば、2km を選択すると、1km 以内にまだ 2 つの銀行があります。

また、3km を選択した場合、2km 以内のすべての公園が描画されるわけではありません (3km 以内に 20 を超える公園があるため、2km 以内の公園のいくつかは 3km の結果に含まれません)。

つまり、 anearbySearchは最大 20 個の結果を返しますが、それ以上ではありません。

代わりに使用できradarSearch()ます。最大 200 件の結果が返されます。
ただし、どの方法を使用しても、すべての結果を取得する方法はありません (ただし、制限で定義されているよりも結果が少ない場合を除きます)。

于 2013-10-21T11:09:30.017 に答える