Egmap NoApiKeys problem

(massimop1973) #1

Hi All,

Now for google geolocation access is required an api key, i have created one in the google maps site, all ok.
The problem start when i try to use it in my program, response is that the api key is not setted:

util.js:225 Google Maps JavaScript API warning: NoApiKeys

a snipped of my program is:

$gMap = new EGMap();
$gMap->zoom = 10;
$mapTypeControlOptions = array(
  'position'=> EGMapControlPosition::LEFT_BOTTOM,
$gMap->mapTypeControlOptions= $mapTypeControlOptions;
// the host is localhost, i am sure that the correct api key is take
if ((!is_null(ZSettings::getConf('settings_geotargeting_google_maps_api'))) &&
(ZSettings::getConf('settings_geotargeting_google_maps_api') != "")) {
if  (isset($_SERVER['SERVER_NAME'])) {
	$gMap->setAPIKey($_SERVER['SERVER_NAME'], ZSettings::getConf('settings_geotargeting_google_maps_api'));
} elseif (isset($_SERVER['HTTP_HOST'])) {
	$gMap->setAPIKey($_SERVER['HTTP_HOST'], ZSettings::getConf('settings_geotargeting_google_maps_api'));


// Test, the response is: null
// the apiKey is not setted!!!!!!! why?

// Create marker
if($model->coordinates && $model->coordinates != 'ERROR')
	$coords = explode(',',$model->coordinates);
	$gMap->setCenter($coords[0], $coords[1]);
	$marker = new EGMapMarker($coords[0], $coords[1], array('title' => $model->business_name));


<style type="text/css">

where I wrong? Thank you

(massimop1973) #2

Hello i finded a solution

the problem is that the new google api policies requires the apikey at the end of the request

to do this i modified the extension like this:

in the file: EGMap.php

public function registerMapScript($afterInit=array(), $language = null, $region = null, $position = CClientScript::POS_LOAD)
		// TODO: include support in the future
		//$params = 'sensor=false';
		$params = '';

		if ($language !== null)
			$params .= '&language=' . $language;
		if ($region !== null)
			$params .= '&region=' . $region;

		// ********* start of hack!!
		// get the api key from setting
		$key = ZSettings::getConf('settings_geotargeting_google_maps_api');

		if ($key !== null)
			$params .= '&key='. $key;
		// ********* end of hack

		CGoogleApi::register('maps', '3', array('other_params' => $params));

in the file: EGMapClient.php

class EGMapClient
	 * The URL for the RESTful geocode API.
	 * @since 2011-03-23 Matt Cheale Updated URL from v2 to v3 of the API.
	 * @since 2011-04-21 Matt Cheale Removed the format option so it can be customised in the geocoding methods.
	 * @since 2011-12-19 Antonio Ramirez renamed to make use of more APIs
        // ****************** added 's' in http 
	const API_GEOCODE_URL = '';
	 * The URL for the RESTful elevation API
	const API_ELEVATION_URL = '';