2014-01-06 150 views
1

我試圖在Google Map中繪製一個公司的標記,例如我正在尋找位於蘇格蘭阿伯丁的Apple Store我想要一個標記,當我點擊它會顯示信息窗口與公司的詳細信息,從谷歌與評論等產生Google Places API映射公司

我找不到任何文件如何做到這一點,但最接近的我發現是一個公司查找然後點你到的位置。我寧願能夠削減開局,只需在代碼中包含公司名稱,並將地圖直接指向該地點即可。

任何人都可能幫助嗎?由於

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Place Autocomplete</title> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
    <meta charset="utf-8"> 
    <style> 
     html, body, #map-canvas { 
     height: 100%; 
     margin: 0px; 
     padding: 0px 
     } 
     .controls { 
     margin-top: 16px; 
     border: 1px solid transparent; 
     border-radius: 2px 0 0 2px; 
     box-sizing: border-box; 
     -moz-box-sizing: border-box; 
     height: 32px; 
     outline: none; 
     box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); 
     } 

     #pac-input { 
     background-color: #fff; 
     padding: 0 11px 0 13px; 
     width: 400px; 
     font-family: Roboto; 
     font-size: 15px; 
     font-weight: 300; 
     text-overflow: ellipsis; 
     } 

     #pac-input:focus { 
     border-color: #4d90fe; 
     margin-left: -1px; 
     padding-left: 14px; /* Regular padding-left + 1. */ 
     width: 401px; 
     } 

     .pac-container { 
     font-family: Roboto; 
     } 

     #type-selector { 
     color: #fff; 
     background-color: #4d90fe; 
     padding: 5px 11px 0px 11px; 
     } 

     #type-selector label { 
     font-family: Roboto; 
     font-size: 13px; 
     font-weight: 300; 
     } 
} 

    </style> 
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places"></script> 

    <script> 
function initialize() { 
    var mapOptions = { 
    center: new google.maps.LatLng(-33.8688, 151.2195), 
    zoom: 13 
    }; 
    var map = new google.maps.Map(document.getElementById('map-canvas'), 
    mapOptions); 

    var input = /** @type {HTMLInputElement} */(
     document.getElementById('pac-input')); 

    var types = document.getElementById('type-selector'); 
    map.controls[google.maps.ControlPosition.TOP_LEFT].push(input); 
    map.controls[google.maps.ControlPosition.TOP_LEFT].push(types); 

    var autocomplete = new google.maps.places.Autocomplete(input); 
    autocomplete.bindTo('bounds', map); 

    var infowindow = new google.maps.InfoWindow(); 
    var marker = new google.maps.Marker({ 
    map: map 
    }); 

    google.maps.event.addListener(autocomplete, 'place_changed', function() { 
    infowindow.close(); 
    marker.setVisible(false); 
    var place = autocomplete.getPlace(); 
    if (!place.geometry) { 
     return; 
    } 

    // If the place has a geometry, then present it on a map. 
    if (place.geometry.viewport) { 
     map.fitBounds(place.geometry.viewport); 
    } else { 
     map.setCenter(place.geometry.location); 
     map.setZoom(17); // Why 17? Because it looks good. 
    } 
    marker.setIcon(/** @type {google.maps.Icon} */({ 
     url: place.icon, 
     size: new google.maps.Size(71, 71), 
     origin: new google.maps.Point(0, 0), 
     anchor: new google.maps.Point(17, 34), 
     scaledSize: new google.maps.Size(35, 35) 
    })); 
    marker.setPosition(place.geometry.location); 
    marker.setVisible(true); 

    var address = ''; 
    if (place.address_components) { 
     address = [ 
     (place.address_components[0] && place.address_components[0].short_name || ''), 
     (place.address_components[1] && place.address_components[1].short_name || ''), 
     (place.address_components[2] && place.address_components[2].short_name || '') 
     ].join(' '); 
    } 

    infowindow.setContent('<div><strong>' + place.name + '</strong><br>' + address); 
    infowindow.open(map, marker); 
    }); 

    // Sets a listener on a radio button to change the filter type on Places 
    // Autocomplete. 
    function setupClickListener(id, types) { 
    var radioButton = document.getElementById(id); 
    google.maps.event.addDomListener(radioButton, 'click', function() { 
     autocomplete.setTypes(types); 
    }); 
    } 

    setupClickListener('changetype-all', []); 
    setupClickListener('changetype-establishment', ['establishment']); 
    setupClickListener('changetype-geocode', ['geocode']); 
} 

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

    </script> 
    </head> 
    <body> 
    <input id="pac-input" class="controls" type="text" 
     placeholder="Enter a location"> 
    <div id="type-selector" class="controls"> 
     <input type="radio" name="type" id="changetype-all" checked="checked"> 
     <label for="changetype-all">All</label> 

     <input type="radio" name="type" id="changetype-establishment"> 
     <label for="changetype-establishment">Establishments</label> 

     <input type="radio" name="type" id="changetype-geocode"> 
     <label for="changetype-geocode">Geocodes</label> 
    </div> 
    <div id="map-canvas"></div> 
    </body> 
</html> 

回答