Google's Places service can be attached to any display map, but if you want to do things with it, such as preset the search you can:
First ensure that the service is enabled but not used, so the the library is loaded but getlocations_search_places.js is not loaded.
In your theme (or bespoke module) create the following javascript file, we will call it mytheme_search_places.js
(function ($) {
var mytheme_sp_markers = [];
var mytheme_places_service;
Drupal.mytheme_search_places = function(key) {
// edit this to suit your map
if ($(".view-display-id-page_1").is('div')) {
mytheme_places_service = new google.maps.places.PlacesService(Drupal.getlocations_map[key]);
var t = 'grocery_or_supermarket';
var minmaxes = (Drupal.getlocations_data[key].minmaxes ? Drupal.getlocations_data[key].minmaxes : '');
var minlat = '';
var minlon = '';
var maxlat = '';
var maxlon = '';
if (minmaxes) {
minlat = parseFloat(minmaxes.minlat);
minlon = parseFloat(minmaxes.minlon);
maxlat = parseFloat(minmaxes.maxlat);
maxlon = parseFloat(minmaxes.maxlon);
var minpoint = new google.maps.LatLng(parseFloat(minlat), parseFloat(minlon));
var maxpoint = new google.maps.LatLng(parseFloat(maxlat), parseFloat(maxlon));
var b = new google.maps.LatLngBounds(minpoint, maxpoint);
var s = {bounds:b, types:[t]};
mytheme_search_places_clearmarkers(key, false);
mytheme_places_service.search(s, function(places, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
mytheme_sp_do_places(places, key);
}
});
}
}
};
function mytheme_do_sp_bubble(marker, p, key) {
var ver = Drupal.getlocations.msiedetect();
var pushit = false;
if ( (ver == '') || (ver && ver > 8)) {
pushit = true;
}
var main = '<p>';
if (p.formatted_address !== undefined) {
main += '<span class="sp_address">' + p.formatted_address + '</span><br />';
}
if (p.formatted_phone_number !== undefined) {
main += '<span class="sp_phone">' + Drupal.t('Phone') + ': ' + p.formatted_phone_number + '</span><br />';
}
else if (p.international_phone_number !== undefined) {
main += '<span class="sp_phone">' + Drupal.t('Int. Phone') + ': ' + p.international_phone_number + '</span><br />';
}
if (p.website !== undefined) {
main += '<span class="sp_web">' + Drupal.t('Web') + ': ' + '<a href="' + p.website + '" target="_blank" >' + p.name + '</a></span><br />';
}
if (p.url !== undefined) {
main += '<span class="sp_web">' + Drupal.t('Google') + ': ' + '<a href="' + p.url + '" target="_blank" >' + p.name + '</a></span><br />';
}
// link to Getdirections or google
if (p.geometry !== undefined) {
var scheme = 'http';
if (Drupal.settings.getlocations[key].is_https) {
scheme = 'https';
}
if (Drupal.settings.getlocations[key].getdirections_enabled) {
main += '<span class="sp_web"><a href="' + Drupal.settings.basePath + 'getdirections/latlon/to/' + p.geometry.location.lat() + ',' + p.geometry.location.lng() + '/' + p.name + '" target="_blank">' + Drupal.t('Directions') + '</a></span><br />';
}
else {
main += '<span class="sp_web"><a href="' + scheme + '://maps.google.com/maps?f=d&ie=UTF8&daddr=' + p.name + '@' + p.geometry.location.lat() + ',' + p.geometry.location.lng() + '" target="_blank">' + Drupal.t('Google Getdirections') + '</a></span><br />';
}
}
main += '</p>';
var photo = '';
if (p.photos !== undefined && p.photos.length > 0 ) {
if (p.photos.length > 1) {
// pick one at random
var rn = Math.floor((Math.random() * p.photos.length )+1);
}
else {
var rn = p.photos.length;
}
var ph = p.photos[rn - 1].getUrl({'maxWidth': 75});
photo += '<img class="sp_picture" src="' + ph + '" alt="' + p.name + '" title="' + p.name + '" />';
}
var sp_content = "";
sp_content += '<div class="location vcard">';
sp_content += '<div class="container-inline">';
sp_content += '<div class="sp_left1">';
sp_content += '<img class="placeIcon" src="' + p.icon + '"/>';
sp_content += '</div>';
sp_content += '<div class="sp_left2">';
sp_content += '<h4>' + p.name + '</h4>';
sp_content += '</div>';
sp_content += '</div>';
sp_content += '<div class="sp_main">';
if (photo) {
sp_content += '<div class="container-inline">';
sp_content += '<div class="sp_left3">';
sp_content += photo;
sp_content += '</div>';
sp_content += '<div class="sp_left4">';
sp_content += main;
sp_content += '</div>';
sp_content += '</div>';
}
else {
sp_content += main;
}
sp_content += '</div>';
sp_content += '</div>';
google.maps.event.addListener(marker, 'click', function() {
// close any previous instances
if (pushit) {
for (var i in Drupal.getlocations_settings[key].infoBubbles) {
Drupal.getlocations_settings[key].infoBubbles[i].close();
}
}
if (Drupal.getlocations_settings[key].markeraction == 2) {
if (typeof(infoBubbleOptions) == 'object') {
var infoBubbleOpts = infoBubbleOptions;
}
else {
var infoBubbleOpts = {};
}
infoBubbleOpts.content = sp_content;
var sp_iw = new InfoBubble(infoBubbleOpts);
}
else {
if (typeof(infoWindowOptions) == 'object') {
var infoWindowOpts = infoWindowOptions;
}
else {
var infoWindowOpts = {};
}
infoWindowOpts.content = sp_content;
var sp_iw = new google.maps.InfoWindow(infoWindowOpts);
}
sp_iw.open(Drupal.getlocations_map[key], marker);
if (pushit) {
Drupal.getlocations_settings[key].infoBubbles.push(sp_iw);
}
});
}
function mytheme_sp_getdetails(m, p, k, i) {
mytheme_places_service.getDetails({reference: p.reference}, function(result, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
mytheme_do_sp_bubble(m, result, k);
}
else {
mytheme_do_sp_bubble(m, p, k);
}
});
}
function mytheme_sp_do_places(places, key) {
for (var ip = 0; ip < places.length; ip++) {
var place = places[ip];
var image = {
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(25, 25)
};
var sp_marker = new google.maps.Marker({
map: Drupal.getlocations_map[key],
icon: image,
title: place.name,
position: place.geometry.location
});
mytheme_sp_markers[ip] = sp_marker;
mytheme_sp_getdetails(sp_marker, place, key, ip);
}
}
mytheme_search_places_clearmarkers = function(key, state) {
// clear out existing markers
for (var i = 0; i < mytheme_sp_markers.length; i++) {
sp_marker = mytheme_sp_markers[i];
sp_marker.setMap(null);
}
mytheme_sp_markers = [];
var ver = Drupal.getlocations.msiedetect();
if ( (ver == '') || (ver && ver > 8)) {
for (var i in Drupal.getlocations_settings[key].infoBubbles) {
Drupal.getlocations_settings[key].infoBubbles[i].close();
}
}
};
Drupal.behaviors.mytheme_search_places = {
attach: function() {
var key = 'key_1';
Drupal.mytheme_search_places(key);
}
};
}(jQuery));
Enable it in your theme's .info file and edit it, replacing "mytheme" with the name of your theme. You will also want to edit the page id (".view-display-id-page_1" in the above example) and which service to show ("grocery_or_supermarket" in the above example).