Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
googlemaps
Advanced tools
This library implements the following Google Maps APIs, and can be also used by Google Maps for Work users.
This library is NOT COMPATIBLE with tags < 1.0.0
If you want to migrate from a version older than 1.0.0
check the WIKI for instructions.
npm install googlemaps
Google Places API - NOT COMPLETED
var publicConfig = {
key: '<YOUR-KEY>',
stagger_time: 1000, // for elevationPath
encode_polylines: false,
secure: true, // use https
proxy: 'http://127.0.0.1:9999' // optional, set a proxy for HTTP requests
};
var gmAPI = new GoogleMapsAPI(publicConfig);
// or in case you are using Google Maps for Work
var enterpriseConfig = {
google_client_id: '<YOUR-CLIENT-ID>', // to use Google Maps for Work
google_private_key: '<YOUR-PRIVATE-KEY>', // to use Google Maps for Work
google_channel: '<YOUR-CHANNEL>' // to use Google Maps for Work application usage tracking
stagger_time: 1000, // for elevationPath
encode_polylines: false,
secure: true, // use https
proxy: 'http://127.0.0.1:9999' // optional, set a proxy for HTTP requests
};
var gmAPI = new GoogleMapsAPI(enterpriseConfig);
// geocode API
var geocodeParams = {
"address": "121, Curtain Road, EC2A 3AD, London UK",
"components": "components=country:GB",
"bounds": "55,-1|54,1",
"language": "en",
"region": "uk"
};
gmAPI.geocode(geocodeParams, function(err, result){
console.log(result);
});
// reverse geocode API
var reverseGeocodeParams = {
"latlng": "51.1245,-0.0523",
"result_type": "postal_code",
"language": "en",
"location_type": "APPROXIMATE"
};
gmAPI.reverseGeocode(reverseGeocodeParams, function(err, result){
console.log(result);
});
Check out the unit tests for more APIs examples.
var gmAPI = new GoogleMapsAPI();
var params = {
center: '444 W Main St Lock Haven PA',
zoom: 15,
size: '500x400',
maptype: 'roadmap',
markers: [
{
location: '300 W Main St Lock Haven, PA',
label : 'A',
color : 'green',
shadow : true
},
{
location: '444 W Main St Lock Haven, PA',
icon: 'http://chart.apis.google.com/chart?chst=d_map_pin_icon&chld=cafe%7C996600'
}
],
style: [
{
feature: 'road',
element: 'all',
rules: {
hue: '0x00ff00'
}
}
],
path: [
{
color: '0x0000ff',
weight: '5',
points: [
'41.139817,-77.454439',
'41.138621,-77.451596'
]
}
]
};
gmAPI.staticMap(params); // return static map URL
gmAPI.staticMap(params, function(err, binaryImage) {
// fetch asynchronously the binary image
});
This example prints the URL for the Static Map image: "https://maps.googleapis.com/maps/api/staticmap?center=444%20W%20Main%20St%20Lock%20Haven%20PA&zoom=15&size=500x400&maptype=roadmap&markers=color%3Agreen%7Clabel%3AA%7Cshadow%3Atrue%7C300%20W%20Main%20St%20Lock%20Haven%2C%20PA&markers=icon%3Ahttp%3A%2F%2Fchart.apis.google.com%2Fchart%3Fchst%3Dd_map_pin_icon%26chld%3Dcafe%257C996600%7C444%20W%20Main%20St%20Lock%20Haven%2C%20PA&path=weight%3A5%7Ccolor%3A0x0000ff%7Cenc%3A%7BbbzFfyvwMnFwP&style=feature%3Aroad%7Celement%3Aall%7Chue%3A0x00ff00"
By giving gm.staticMap an optional callback, you can retreive the static map PNG data:
You will get a map like:
For custom markers using the icon
parameter, a little-known scale
parameter is also available that makes it possible to use high-resolution custom images on devices with retina displays. Set it to 2 and use it together with a @2x
http-only image URL (Google's API does not support custom marker images served over https), such as:
{
location: '999 Example Road, Earth',
icon: 'http://example.com/path/to/custom-marker@2x.png',
scale: 2
}
Credits to this answer on SO.
var gmAPI = new GoogleMapsAPI();
var params = {
location: '51.507868,-0.087689',
size: '1200x1600',
heading: 108.4,
pitch: 7,
fov: 40
};
var result = gmAPI.streetView(params);
Please refer to the code, tests and the Google Maps API docs for further usage information.
Criticism/Suggestions/Patches/PullRequests are welcome.
Contributions and new issues are welcome!
FAQs
A simple way to query the Google Maps API from Node.js
We found that googlemaps demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.