2015-03-05 26 views
8

Tôi cần phải nhận các cơ sở gần nhất trong bán kính 100m từ các tọa độ cụ thể. Tôi đã tìm thấy mã mẫu API Google Địa điểm, nhưng tôi không sử dụng bản đồ trong ứng dụng của mình, vì kết quả này sẽ được hiển thị trong danh sách. Đây là mã API:Sử dụng thư viện API Google Địa điểm mà không có bản đồ - javascript

var map; 
var infowindow; 

function initialize() { 
    var pyrmont = new google.maps.LatLng(-33.8665433, 151.1956316); 

    map = new google.maps.Map(document.getElementById('map-canvas'), { 
    center: pyrmont, 
    zoom: 15 
    }); 

    var request = { 
    location: pyrmont, 
    radius: 500, 
    types: ['store'] 
    }; 
    infowindow = new google.maps.InfoWindow(); 
    var service = new google.maps.places.PlacesService(map); 
    service.nearbySearch(request, callback); 
} 

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

function createMarker(place) { 
    var placeLoc = place.geometry.location; 
    var marker = new google.maps.Marker({ 
    map: map, 
    position: place.geometry.location 
    }); 

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

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

Có người ở đây đã phát hiện ra rằng bạn có thể sử dụng một nút để làm cho ghi vào, nhưng khi tôi cố gắng ti render trong nó:

var $attrib = $('<div id="attributions"></div>'); 
$('#main').append($attrib); 
... 
service = new google.maps.places.PlacesService($attrib); 
service.nearbySearch(request, callback); 

tôi nhận được một lỗi:

TypeError: this.j[Wb] is not a function 

từ đâu đó sâu bên trong thư viện API. Tôi hy vọng điều này là đủ thông tin để giải quyết vấn đề ra

+0

không mã gây ra vấn đề như thế nào? Vui lòng [ví dụ tối thiểu, đầy đủ, được kiểm tra và có thể đọc được] (http://stackoverflow.com/help/mcve) để minh họa sự cố. – geocodezip

Trả lời

5

$attrib có lẽ không phải là nút, tôi đoán đó là đối tượng jQuery.

Sử dụng

service = new google.maps.places.PlacesService($attrib[0]); 

hoặc không có jQuery:

service = new google.maps.places 
      .PlacesService(document.getElementById('main') 
         .appendChild(document.createElement('div'))); 
+0

Tiến sĩ Molle, cảm ơn bạn, nó đã hoạt động! Bạn có thể giải thích những gì là nút trong trường hợp này? –

+1

Nút là phần tử HTML, trong trường hợp này là 'div # attributions' đã được tạo thông qua jQuery. Nhưng jQuery không trả lại một phần tử HTML, nó trả về một đối tượng jQuery (bao gồm một mảng với các phần tử HTML). Để lấy một phần tử HTML đơn lẻ ra khỏi mảng này, truy cập nó qua chỉ mục (bắt đầu bằng 0). Chỉ có một phần tử duy nhất trong mảng, vì vậy '$ attrib [0]' sẽ trỏ đến phần tử này. –

+1

Cảm ơn bạn rất nhiều! –

Các vấn đề liên quan