Upload 360° photos to Google Maps without using Google's app https://map.winscloud.net
Go to file
Win 1b6d587c30 update docker file 2024-07-19 12:20:09 +07:00
public/assets Reformat and fix domain error 2023-06-27 11:39:15 -04:00
views Update upload.ejs 2024-03-09 18:44:43 -05:00
.gitignore gitignore 2024-07-19 12:17:18 +07:00
Dockerfile update docker file 2024-07-19 12:20:09 +07:00
LICENSE Initial commit 2023-02-14 19:42:50 -05:00
README.md edited config 2024-07-19 11:44:17 +07:00
config.example.json edited config 2024-07-19 11:44:17 +07:00
docker-compose.yml update docker file 2024-07-19 12:20:09 +07:00
index.js Reformat and fix domain error 2023-06-27 11:39:15 -04:00
package.json Reformat and fix domain error 2023-06-27 11:39:15 -04:00

README.md



Uploading 360° photos made easy

Overview

Upload 360° photos to Google Maps without using Google's app.

The main reason why I created this is because Google Maps isn't a good replacement of the former app. You are only able to upload 360 photos to specific places on the map. With this project, it is possible to upload them at any coordinates.

If you want to try it out, there are publicly available instances:

URL Country Status Hosted By
maps.moomoo.me 🇬🇧 Up @moom0o
map.winscloud.net 🇹🇭 Down @WinsDominoes

Quick start

In order to get the Google api keys required for the oauth follow these steps:

Client ID

  1. Create a new project at https://console.cloud.google.com/

  2. Head over to the API library and enable the Street View Publish API

  3. Select 'Create Credentials', select 'User Data', enter any app name/email.

  4. Enable the 'Street View Publish API' scope. You won't need any sensitive scopes.

  5. Select 'Web application' for type, and name it anything.

  6. Add http://localhost:7000 to authorized javascript origins. (If you are running on another domain/port, replace localhost)

  7. Add http://localhost:7000/auth/ to authorized redirect URIs (If you are running on another domain/port, replace localhost)

  8. You should now copy the Client ID into the config.json file.

Client Secret

Head to the main credentials screen and click the pencil. (Edit OAuth Client) You will be able to find the Client Secret and copy that to your config.json.

  1. Select 'OAuth consent screen', use any name/email

  2. Make sure the authorized domain and email is correct, then select 'Save and Continue'.

  3. Make sure the Street View Publish API scope is enabled, if not, add it!

  4. For test users, add the email address of the account where you want to upload 360 photos.

  5. Make sure to also copy the client ID into index.html, after '&client_id=' and before '&scope', if needed, change the port and domain here as well.

Config File

There are many options in the config file that might confuse you, so here's a simple guide (I think?) to help you get through it.

Keys Default values Usage
https false (boolean) This is an option whether if you want to enable https or not, this uses boolean values. false = http:// and true = https://
host localhost (string) Your host or domain, if you are hosting on a local machine, set this to localhost, if you are hosting this publicly, set it to your domain.
port 7000 (integer) or null Your port, if are running this as a public instance, set this to null
openWebBrowser true (boolean) This option will open a browser window to PhotoSphereStudio's running instance, set this to false if you are running this on a server,
clientId string Paste your Google OAuth Client ID here, check the previous steps on how to get it.
clientSecret string Paste your Google OAuth Client Secret ID here, check the previous steps on how to get it.

INFO: Your authorized JavaScript origins and authorized redirect URIs should be the same as the one you have set in your config file.

Scenario 1 - Public Instance

This example is for those who are hosting a public instance, your https, host and port would look something like this. Change maps.moomoo.me to your domain.

You must use a nginx reverse proxy pointing to localhost:7000 for this to work.

{
  "https": true,
  "host": "maps.moomoo.me",
  "port": 7000
}

Your authorized JavaScript origin would be: https://maps.moomoo.me

Your authorized redirect URIs would be: https://maps.moomoo.me/auth/ (don't forget the slash after auth)

Scenario 2 - Private Instance

This example is for those who are running PhotoSphereStudio on a local machine, your https, host and port would look something like this.

{
    "https": false,
    "host": "localhost",
    "port" 7000
}

Your authorized JavaScript origin would be: http://localhost:7000

Your authorized redirect URIs would be: http://localhost:7000/auth/ (don't forget the slash after auth)

Installation

  1. Clone the repository
git clone https://github.com/moom0o/PhotoSphereStudio.git
  1. Install the dependencies
npm install
  1. Rename config.example.json to config.json

  2. Update the config.json file in the root directory of the project and fill it with the required information (clientId, clientSecret, etc.)

  3. Start the server

node index.js

Support

If you have any questions about how to set this up or about the source code, feel free to ask either moom0o ( m.o.o.m.o.o on Discord) or WinsDominoes (winsdominoes on Discord).